浅谈代码对性能的影响

上一篇 / 下一篇  2012-07-31 23:20:26 / 个人分类:others

   有时候,在做性能测试的时候经常听到说,现在不同了,性能不行就加机器吧,我不说这句话对错,但是如果是遇见这样的一种情况呢?
   发现响应时间很长,但是资源的占用很低,网络带宽利用率也不高,server组件的配置符合常见公共配置,这个时候它响应时间就是慢,这个时候堆再多的机器还有用吗?
   这样的情况我不知道读者本身遇到过没有,比如sql语句的执行计划,没有按预期的执行,建立的索引没有被使用啦,建立的索引不是最佳索引啦(比如聚集or非聚集的建立规则等),都是符合这样的场景的,但是今天,我想说的是“浅谈代码对性能的影响”中的代码尝试性的往前面走走,比如:应用层的。(这里请恕能力有限,后面用php来举例说明)。请看以下代码:
test1.php文件内容:
<?php
$file=fopen("d:/text.txt","w");
var_dump(flock($file,LOCK_EX));
if(flock($file,LOCK_EX)){
    fwrite($file,"hello,php world");
    sleep(10);
    fwrite($file,"php world ,i will coming");
    flock($file,LOCK_UN);
}
fclose($file);
?>

test2.php文件内容
<?php
$file = "d:/text.txt";    
$fp = fopen($file , 'r');    
if(flock($fp , LOCK_EX)){    
    echo fread($fp , 1024);    
    flock($fp , LOCK_UN);    
} else{    
    echo "Lock file failed...\n";    
}    
fclose($fp); 
?>
打开两个php执行终端,执行test1.php之后,在另一终端即时执行test2.php,你会发现什么?test2.php的执行时间很长,但是读者肯定也发现,就这两个php文件,执行的时候对于什么cpu,memory,io等,带宽等的占用,都是微乎其微的,是浮云。那原因是什么呢?
  这里的test2.php执行时间长就是因为在这里使用到了php特性中的flock  LOCK_EX(参数),test2.php需要等待test1.php执行完成,释放在该文件中获得的flock(文件锁)之后,test2.php才能获得该锁.

  读者朋友,如果有兴趣,可以自己尝试一下,以上的代码如果就是你分析,定位出来的问题,如何调优或者修改代码来解决这个问题呢?......
  性能,一条很大很宽的路,背包前行,厚积薄发......


TAG:

 

评分:0

我来说两句

Open Toolbar