软件性能的设计(三)数据类型对软件性能的影响

原创 2001年05月24日 15:10:00

                 软件性能的设计(三)数据类型对软件性能的影响
     刘彦清·yesky


  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的需求而生成的。如果要衡量一个组件对性能的真正影响,不仅需要评估代码的资源利用情况,还需要评估建立调用的代码以及调用返回的代码的资源利用情况,要使用标准的分析工具完成这些分析工作是非常困难的。

 

架构设计中影响性能的因素及解决方案

性能(performance)设计非常重要,对于服务器端实时交易系统来说系统性能的重要性不言而喻,对客户端软件来说性能好的软件也会获得良好的用户体验,从而给用户留下高质量软件的良好印象。因此在进行架构...
  • bzhxuexi
  • bzhxuexi
  • 2015年06月15日 09:54
  • 1094

试论软件的可靠性及其保证

试论软件的可靠性及其保证 来源:ChinaItLab  用软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,在一些关键的应用领域,如航空、航天等,其可靠性要...
  • gerryzhu
  • gerryzhu
  • 2013年11月27日 11:23
  • 10791

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

译自: http://www.mssqltips.com/sqlservertip/2749/sql-server-data-type-precedence/?utm_source=dailynew...
  • DBA_Huangzj
  • DBA_Huangzj
  • 2012年08月19日 14:35
  • 7492

类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有

  • 2009年05月06日 16:17
  • 596KB
  • 下载

mysql的数据类型以及性能优化

最近想在建mysql数据库的时候就考虑到一些性能方面的事情。怎么样才能在建表的时候就提升整张表的性能呢。唯有在数据类型上下点功夫了。一、mysql建表的数据类型标准1、选用占字节较小的   一般情况下...
  • LJFPHP
  • LJFPHP
  • 2017年12月12日 16:07
  • 75

mysql中schema与数据类型优化以及服务器性能检测

1.数据类型优化 应该遵循的原则: -更小的通常更好 -简单就好:mysql内建的类型而不是字符串来存储时间。整数比字符串操作代价低 -尽量避免null: -使用枚举代替字符串类型 -da...
  • m0_37139189
  • m0_37139189
  • 2017年12月04日 15:48
  • 43

让你提前认识软件开发(5):重定义一些基本数据类型

第1部分 重新认识C语言 重定义一些基本数据类型         在编写程序的时候,定义变量是必不可少的,这时就要用到一些基本数据类型。         也许你会说,定义一个变量有什么困难的,这是很容...
  • zhouzxi
  • zhouzxi
  • 2014年03月19日 20:04
  • 3385

软件架构————编程中基本数据类型注意事项

总结了一些关于如何写常用数据变量的规则,应该注意一些什么东西~~希望对大家有用...
  • zs2538596
  • zs2538596
  • 2014年11月24日 11:06
  • 571

软件开发(5):重定义一些基本数据类型

第1部分 重新认识C语言 重定义一些基本数据类型           在编写程序的时候,定义变量是必不可少的,这时就要用到一些基本数据类型。         也许你会说,定义一...
  • u014365862
  • u014365862
  • 2015年10月08日 20:31
  • 407

[零基础学软件开发5]c语言数据类型初探

声明:我写这一系列文章在讲述过程中可能用了一些大白话,也可能有的地方墨迹了一些,但旨在把一些没有基础但很想学软件开发的一些人领进门来,另外该文章我同时也在百度经验发表。 大多数时候我们编写软件的目...
  • u013250202
  • u013250202
  • 2013年12月25日 10:11
  • 795
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件性能的设计(三)数据类型对软件性能的影响
举报原因:
原因补充:

(最多只允许输入30个字)