存档

2010年5月 的存档

php中&符号的滥用与它引发的bug

2010年5月7日 1 条评论

php中,使用&表明这个引用是指针,这样在两个引用可以指向同一个内存空间。但其实不使用&的情况下,php也是写时拷贝的,zend引擎只有在修改的时候才会发生内存拷贝,不修改的话是不会产生消耗的。在实际使用中,我还发现使用&符号反而性能会降低。

在不需要修改的情况下,建议尽量不要使用&符号,否则不仅降低效率,还有可能造成出现bug。今天查看最近对测试框架的升级,就踩上了simpletest上面的一个bug,请看simpletest中,想testsuit加上case的函数:

function addTestCase(&$test_case) {
     $this->_test_cases[] = &$test_case;
}

这么简单的函数,我想大家一般都会认为没有问题吧,正常情况下它都能很好的工作,但是如果你这样用,就bug了:

foreach($arr_cases as $case){
     $this->test_suit->addTestCaseOpenTest($case);
}

你会发现_test_cases这个数组里面,只哟foreach最终的那个元素,因为函数都是接受的值引用,foreach改变$case的值,就把已经传入_test_cases数组的内容都给改写了,于是就悲剧了。对于simpletest来说,它并不需要修改用户的case程序,这样做值引用显然是多此一举,还产生了bug。

关于性能降低,用一个简单的代码测试一下就知道了

$a = array('a','c','n'); 

function printArray(&$arr)
{
    print(count($arr));
}

for($i=0;$i<100000;$i++){
    printArray($a);
}

用time命令跑一次,把printArray的&符号去掉再跑一次,可以看到大致下面的结果(机器不同,结果不同啊)

带有&符号 不带有&符号
real    0m0.183s
user    0m0.130s
sys     0m0.053s
real    0m0.160s
user    0m0.101s
sys     0m0.060s

可见使用&反而会使性能下降的,所以除非有必要,不建议使用&符号

---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/05/07/php-in-the-ampersand-on-the-abuse-of.html
---------------------------------------------------------------

分类: 程序员 标签:

关于对形式的亵渎

2010年5月5日 没有评论

看到这段内容,不得不说两句

二战前,很多美国公立学校要求孩子要向国旗宣誓致敬,但是有个宗教团体“耶和华见证人”不同意。因为那样威胁了他们的“除神之外,别无所敬”的信仰。
但是,当时正在二战之前,爱国热情高涨之时,“向国旗致敬是当事人不能推卸的政治责任”这是最高院大法官们的多数意见。
但还是有一票反对“诱导他们自动表达忠诚是一回事,强制他们表达忠诚又是另一回事,对公众自由的保证,实际上是对人们心智和心灵自由的保证。对合理地表达这种自由的机会的保证”。
这个异议意见不起作用,但会被写下来,公诸于众,接受历史检验。
不久之后,纳粹德国兴起,“耶和华见证人”在德国的信徒,拒绝向希特勒和德国宣誓效忠,拒绝参加任何军事活动,6262人被捕,1200人被处决。
1943年,美国最高法院推翻之前判决,判决学校不能强行要求学生向国旗宣誓。
“如果积极主动地参加爱国仪式的行为,被外力强迫,照本宣科,或者刻意逢迎所取代,相信爱国主义绝对无法弘扬”。

我想大家还记得小时候学校总是叫我们举着拳头,我志愿如何如何之类的,就是少先队员的那些誓词一类。小学的时候,几乎每个孩子都带着红领巾,但又有哪个孩子知道我党我军赋予红领巾的含义呢。

不被社会真实认同的价值观,被强加到仪式之上,是对仪式的亵渎,是对人们内心价值观的摧残。

习惯了说一套做一套,习惯了流于虚假的形式,习惯了流氓的执政风格,人们就会习惯于选择流氓方法。

记得ccav报道过一个贪官的事情:

自来水厂的厂长,因为开发商低价销售给了他一套房子而被判刑。在法庭上,辩护律师称开发商之所以低价销售是因为与厂长的私人关系好,开发商就是愿意低价出售,谁也管不着。但是检方举出一个证据:自来水厂没有收开发商的管道垫资费就给楼盘接通了自来水,虽然国家没有规定开发商就必须要交管道垫资费,但以前厂长都是收的,厂长只能用上级领导口头说不收辩诉。法院判刑的理由是:虽然国家没有规定,但自来水厂收垫资费已经是惯例,并且开发商也接受了,这就是开发商贿赂的原因。

在这件事情里面,我们看到的是:行政垄断,流氓执法,依潜规则判案。既然要整,还玩啥形式呢,其实神舟应该无官不贪,但法院连证据都懒得搜集,就这样判案,只能带来人民大众对国家公权力的更加不信任。

---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/05/05/on-the-form-of-blasphemy.html
---------------------------------------------------------------

分类: 生活 标签:

2010车展归来

2010年5月1日 6 条评论

雷克萨斯赛车

昨天趁工作日去的车展,最大的感受是:人太多了。展会上面凡是平时不容易见到的好车都是围着的,不让摸也不让进去坐,为了一圈人在外面。可以进去坐的车倒是4s店都有。我对车模没有太大兴趣,所以没有拍车模(这也是一件累活,拍车模需要体力挤过去啊)。车也拍的不错,因为车展上绝大多数车4s店都有,还有啥可拍的呢。

唯一觉得一张有些感觉的就是雷克萨斯的这两旧赛车了,上面有很多补丁,为了这个照片,还是趁着车模不在的时候去拍的嘎嘎。

另外一个感受就是,大众在国内汽车市场的确是领军人物啊,e5馆是大家公认的最好的馆,大这个馆里面60%的面积是大众车,剩下的一些就是那些名跑车,比如布加迪威航那些。另外在在日本车的展厅人不算很多但也不是很少,20多万的日本车竟然是用了实木内饰了,真是佩服,不知道花在发动机变速箱与悬挂上面的钱有多少…

车展门票要50元一张,吃的东西也很贵,在里面的时候,车没看见多少,但被挤的够呛。我曾经一度在心里想:展会组办方看着游客们,是不是感觉就像无数堆钱在路上走啊,总之认为这50块钱花的有些亏。

---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/05/01/2010-auto-show-returns.html
---------------------------------------------------------------

分类: 生活 标签: