软件开发: 08 2008存档

php小提示

| | Comments (0) | TrackBacks (0)
php中的"!="和“!==”有啥区别?看个例子就知道了:

$a=0;
var_dump($a!=false);       //result: bool(false)
var_dump($a!==false);     //result: bool(true)

"!=="要求被比较的变量是严格的bool类型,而"!="没有这个要求,"0"它也认为是false

性能优化

| | Comments (0) | TrackBacks (0)
        还是上次的php性能优化
        在拿掉了错误lock的 cache之后,性能有所回升但还是不能完全满意,于是继续插桩子找瓶颈。发现分词功能偏慢,做成c++写的服务;发现计算编辑距离偏慢,也做成服务供 php调用,反正yahoo的proxyio好使,不用白不用。都改完了发现效果并不明显,由于是计算大量词的编辑距离,所以即使加快了一对词的计算速 度,但词多了一样快不起来。唉,找瓶颈、再各个击破的方法看来也不是那么好使。
        最后看到计算编辑距离后有个过滤,咦,先过滤,剩下的少量词再算编辑距离不就快了吗?实行之,哐当,apache的response time跌回到100毫秒。
        再小打小闹的语句优化都不如程序结构或算法优化带来的效果大啊。

php性能调试

| | Comments (0) | TrackBacks (0)
        服务器上php服务变慢,这几天就忙着优化性能,费了好大的劲。
        记得有本书上说:在做性能优化是,程序员通常都会猜错性能瓶 颈的位置——所以千万不要猜,要用性能剖析(profile)工具。这话实在是至理明言!这次性能优化我就猜错了瓶颈,还好醒悟的快,但要命的是php没 有性能剖析工具,只好在程序里到处插桩子,进行“手工剖析”,终于发现瓶颈在cache上。说来好笑,cache本来是提高查找速度的,怎么变成瓶颈了? 主要是因为这个cache支持多进程是通过锁,每次访问cache时都要先锁再访问,如果有新数据,把数据放入cache,然后解锁退出,这对于采用多进 程模式的apache-php就是要了命。去掉cache,速度快了很多,至少原来的访问超时错误没有了。
        唉,不支持多进程无锁访问的cache,千万不能用到php里啊。