明显unless要快,是因为if not要计算两次么?作者: 八云紫 时间: 2010-7-4 21:23
估计是 if not 先取反再判断, unless 直接判断~作者: zhangbanxian 时间: 2010-7-4 21:30
if not是两步,unless是一步,自然是unless快了...- -b话说lz思考问题真精确作者: 小幽的马甲 时间: 2010-7-4 21:44
if not true and false---》不满足
呵呵,对的,不过我说的是效率,i++ 要额外使用一个寄存器保存 i 的值作为返回值,然后再把 i 加 1,而 ++i 直接把 i 加 1,返回 i
这个区别在硬件飞速发展的今天已经是微乎其微了,虽然很多高手还是坚持“效率完美主义”,但我觉得应该把精力放在分析算法复杂度上,那才是大头儿作者: DeathKing 时间: 2010-7-5 01:14
回复
呵呵,对的,不过我说的是效率,i++ 要额外使用一个寄存器保存 i 的值作为返回值,然后再把 i 加 1 ...
紫苏 发表于 2010-7-5 01:12
其实不要指针的原因是多方面的,其中一个比较重要的是为了在内存托管机制下减少堆内存碎片——在大多数现代高级语言中,只要是有垃圾回收机制的,都不会提供指针。在堆中分配的内存通常都是零散的(这也是为什么这种内存区域叫“堆”,顾名思义,没有次序的一堆),会导致堆内存中产生很多碎片,而当对象被垃圾回收后,GC 就会紧缩内存,整理碎片,这样才能提高分配堆内存的效率(因为分配堆内存需要在“杂乱的一堆”中找到一块足够大的连续空间)。这样一来,就需要把内存中的对象移来移去,自然指向这个对象的引用的地址也会改变。由于所有该对象的引用在底层都是指向同一个指针(而这个对象唯一的指针又指向该对象),所以只需要改变这个指针的值,就能改变所有引用指向的值。但这在 C++ 中却是不可能的,因为 C++ 可以操纵任意数量的指针指向任意地址
除此之外还有其它原因,比如安全性:有指针就有可能导致内存泄漏,崩溃,访问不可访问、释放已被释放的地址而导致段错误等,引用则不会出现这些问题