C#泛型的性能优势

  我写东西一向追求短小精悍,就不放代码去验证的,只说结论,并会与Java泛型做对比。有不对之处还望指出。

  泛型作为一个在C#2.0中就引入的特性,也是C#的重要特性之一,我经常看到有人讨论泛型带来的便捷性和(一定程度上的)安全性,却很少见有人说泛型的性能优势,要么点到即止要么泛泛而谈说得太复杂——可能仅仅是因为我孤陋寡闻吧……

  好了,废话不说了,以下是结论:

  如果你要用一个ArrayList add一个byte,我们看看会发生什么。

  假设在一个32位CLR上,对对象进行装箱要消耗8字节,用4字节存储数据(因为要向上取整),还有4字节是引用——这就用了16字节了。而如果使用List<byte>,因为类型参数已经确定,每一个byte只会产生1字节用来储存。

  再来看JAVA的泛型……JAVA大家都知道了……因为类型擦除,泛型没有什么性能优势,还是相当于一个普通的ArrayList,要对所有类型进行类似C#中的“装箱”,唯一的好处就是安全性了。

  一路写下来好像没什么好说的……为什么要说这个呢,请看类标题。我有一个不成熟的乐趣就是吹.NET黑JAVA,突然想起一点就记下来了……

时间: 2024-08-15 04:46:29

C#泛型的性能优势的相关文章

速锐得车载以太网的信息性能优势硬件及应用研究

车载通信技术的发展从串行通信,到工业总线,再到总线网络.随着车载电子控制和信息装置的增加以及信息服务需求不断增加,更高级的计算机网络在车上应用是必然的,尤其是多媒体信息,以及电子地图.因特网信息等在车上的应用,像CAN这样的总线已经只能满足部分功能,但难满足带宽以及传输形式,从现在看来,车载以太网已经在各豪华车系随之落地.由于以太网技术的成熟以及广泛应用,人们自然会想到把它用到车上去满足这部分需求,只是当下软硬件的成本都相对偏大,因为车载环境以及车上网络数据传输需求,又和以太网设计初衷存在很大差

Oracle全文索引的性能优势实例

一.实验说明: 操作系统:rhel 5.4 x86 数据库:Oracle 11g R2 二.操作步骤: 2.1.首先创建一个表t_btree,并创建B-Tree索引,索引键是object_name: SQL> create table t_btree as select * from dba_objects; Table created. SQL> create index ind_btree on t_btree(object_name); Index created. 接着是执行下面的查询

C#基础系列——小话泛型

前言:前面两章介绍了C#的两个常用技术:C#基础系列——反射笔记 和 C#基础系列——Attribute特性使用 .这一章来总结下C#泛型技术的使用.据博主的使用经历,觉得泛型也是为了重用而生的,并且大部分时候会和反射一起使用.这次还是打算围绕WWH(即What.Why.How)来讲解. 1.什么是泛型:通过参数化类型来实现在同一份代码上操作多种数据类型.利用“参数化类型”将类型抽象化,从而实现灵活的复用.怎么理解呢,其实根据博主的理解,泛型就是将类型抽象化,使用抽象化的类型或对象去实现某些功能

MySQL 性能优化的最佳20多条经验分享

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的                    事,而这更是我们程序员需要去关注的事情. 当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语                句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的M

MySQL性能优化的最佳20+条经验

http://www.pythonclub.org/mysql/optimize-20-tips 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存

MySQL性能优化的20+条经验

1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了.这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的.因为,我们某些查询语句会让MySQL不使用缓存.请看下面的示例: // 查询缓存不开启 $r = mysql_query("SELECT username FROM use

MySQL 数据库性能优化之SQL优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段. 2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就

MySQL 性能优化的最佳 20+ 条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用.1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被My

回击MLAA:NVIDIA FXAA抗锯齿性能实测、画质对比

PC游戏玩家肯定会对各式各样的AA抗锯齿技术非常熟悉,而今天本文的主角就是NVIDIA今年才推出的新型抗锯齿技术"FXAA". FXAA在某种程度上有些类似于AMD之前宣传的MLAA(形态抗锯齿),但远比后者低调,所以很多玩家可能还从来没听说过,但是如果你玩过<永远的毁灭公爵>或者<F.3.A.R>,应该会有所耳闻.今天我们就来实际测测多款显卡上的FXAA性能和画质表现,并将其与MLAA进行简单对比. 什么是FXAA? FXAA全称为"Fast App