数据类型对软件性能的影响

数据|数据类型|性能

BadRegExpMatcher要求MailBot将输入文本由字符数组转换为一个String对象,从而导致了不必要的对象创建。然而,滑稽的是为了更方便地使用输入文本,BadRegExpMatcher会立即将String对象转换为一个字符数组,这样不但会生成另一个对象,还意味着你在费了九牛二虎之力得到的结果,跟调用程序最初提供的数据没有什么二样,MailBot和BadRegExpMatcher都不要求使用String对象,String对象似乎仅仅是为也在组件之间交换文本数据而存在的。

  在上面的BadRegExpMatcher例子中,String仅仅是一种供交换用的类型,无论是调用程序还是被调用程序都不需要使用供交换用的数据类型来表示数据,但它们可以很方便地把它与其他的数据类型进行转换。尽管在定义接口时采用供交换用的数据类型可以在保持灵活性的前提下降低复杂性,但有时会带来性能上的损失。

  供交换用数据类型的一个最常见的例子是JDBC ResultSet接口,没有一种数据库的接口会用JDBC ResultSet表示返回的结果,但JDBC驱动程序可以很方便地把数据库返回的结果转换为JDBC ResultSet型数据。同样,也没有一种客户端软件用DBC ResultSet型数据表示数据记录,但你也可以不费什么劲儿就将ResultSet型数据转换为所需要的数据类型。在JDBC中我们可以接受这种"多此一举",因为它具有标准性和跨数据库的可移植性等好处。无论如何,由供交换用数据类型所带来的性能损失都是一个值得注意的问题。

  在RegExpMatcher中,在定义接口时使用String对象对减少复杂性或增加可移植性的帮助并不大,对性能却有着相当大的影响,这么做是得不偿失的。在设计接口时使用可互换类型往往很有吸引力,因为这样能够使接口看起来更"干净"一些,但你应该确信你为此所作的折衷是明智的。有时━━就象RegExpMatcher那样,调用程序可以使用多种输入、输出格式,应该考虑如何能够更方便地满足它们的需求。

  值得指出的是,对使用可互换类型对性能的影响进行量化不是一件容易的事儿。如果对调用BadRegExpMatcher的代码进行分析,它将指派运行时间库创建输入用的String对象,这个String对象是为满足BadRegExpMatcher的需求而生成的。如果要衡量一个组件对性能的真正影响,不仅需要评估代码的资源利用情况,还需要评估建立调用的代码以及调用返回的代码的资源利用情况,要使用标准的分析工具完成这些分析工作是非常困难的。

时间: 2024-09-20 09:07:05

数据类型对软件性能的影响的相关文章

SQL Server 2008数据类型

在创建表时,必须为表中的每列指派一种数据类型.本节将介绍SQL Server中最常用的一些数据类型.即使创建自定义数据类型,它也必须基于一种标准的SQL Server数据类型.例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于SQL Server标准的varchar数据类型. CREATE TYPE Address   FROM varchar(35) NOT NULL  如果在SQL Server Management Studio的表设计界面中更改一个大型表中某

C#视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)

一.给服务器发送字符串 实现这个功能非常简单,感觉不怎么实用. 1.VC++ Code: MP4_ClientCommandtoServer((LPCTSTR)ctemp,sendcont,400); 2.C# Code: PcHikClient.MP4_ClientCommandtoServer("192.168.0.188", "服务器你好:)", 14); 从API文档中能找到关于这个方法的说明:第一个参数是服务器的IP,第二个是要发送的字符串,第三个参数是字

弱引用-ios 与xib视图加载相关的内存管理问题

问题描述 ios 与xib视图加载相关的内存管理问题 在通过xib加载视图的时候,我们遵循一个准侧 那就是顶层视图 我们的成员变量要是强引用 若是非顶层视图,而是顶层视图的子视图,为了防止顶层视图被释放以后,字视图还存在而造成的内存泄漏,我们把这字视图的成员变量定义为弱饮用 现在问题是,在ARC模式下,假如我有个视图控制起ViewController,然后有个UIButton子视图 @interface ViewController:UIViewController {weak/strong I

不一致的国际数据隐私法

中国新的网络安全法已经生效,这意味着全球范围内新增一个国际数据隐私法,这可能给跨国企业带来更多挑战. 企业可以在2018年再开始遵守欧盟的<一般数据保护条例>(GDPR),与欧盟GDPR相同,中国的数据隐私法于2016年11月获得批准,并于2017年6月1日生效.新法律主要适用于"网络运营商"和"关键信息基础设施(CII)",有专家表示该法律在定义方面过于广泛. "对此,该法律表明,任何维护计算机网络的公司(甚至在自己办公室内),都可被认定为'

构建风控系统之排坑扫雷(二)

本文讲的是构建风控系统之排坑扫雷(二), 规则之坑 黑白名单的"陷阱" 在业务风控里,黑白名单是最好用的,也是最简单粗暴的,简单粗暴意味着容易出现问题,一不留神就会把自己"坑死",一次随意添加黑名单数据可能会直接侵害大部分的正常用户,同样的,白名单的随意添加直接可能为恶意用户打开便捷之门. 一般我们在建立风控策略的时候,黑白名单策略永远是我们的第一个选择,矗立于所有策略前,原因有两点 1) 黑白名单应该是我们最有把握的,黑白名单的每一次添加和移除都需要经过深思熟虑严

SQLServer数据类型优先级对性能的影响

原文:SQLServer数据类型优先级对性能的影响 译自: http://www.mssqltips.com/sqlservertip/2749/sql-server-data-type-precedence/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012814   问题:          我在我的应用程序中使用简单的查询/存储过程访问一个很大的表.但执行了很长

MySQL字符数据类型char与varchar的区别

数据类型差不多是接触mysql一开始就了解的内容,最近遇到几个现象如varchar自动转mediumtext,blob存储性能的问题,不得不回头明确一下关于MySQL常用数据类型的选择. mysql手册这里 已经讲的很清楚了.它们都是定义字符串型字段时常用的类型,但它们存储和检索的方式有不同,最大长度和尾部的空格是否保留也有差别. char类型是使用固定长度空间进行存储,范围0-255.比如CHAR(30)能放30个字节,存放abcd时,尾部会以空格补齐,实际占用空间 30bytes .检索它的

使用 SQLXML 数据类型

xml|数据|数据类型 概述 J2EE 开发人员通常需要在关系数据库中存储 XML 文档以及从数据库中检索 XML 文档,以获得元素值和属性值.目前,只有特定于供应商的技术和数据类型可用于在关系数据库中存储 XML 文档.例如 IBM DB2 Universal Database (UDB) 提供了 DB2 XML Extender 和 XML 用户定义类型 (UDT) 来存储 XML 文档.用于 XML 类型列的标准数据类型和对应于 XML 类型列的 Java 数据类型将促进关系数据库中 XM

影响SQL server性能的关键

server|性能 1 逻辑数据库和表的设计 数据库的逻辑设计.包括表与表之间的关系是优化关系型数据库性能的核心.一个好的逻辑数据库设计可以为优化数据库和应用程序打下良好的基础. 标准化的数据库逻辑设计包括用多的.有相互关系的窄表来代替很多列的长数据表.下面是一些使用标准化表的一些好处. A:由于表窄,因此可以使排序和建立索引更为迅速 B:由于多表,所以多镞的索引成为可能 C:更窄更紧凑的索引 D:每个表中可以有少一些的索引,因此可以提高insert update delete等的速度,因为这些