cms生成速度优化实验结果(一)

[ At 11/10/2008 By wukong   1 comments ]

这两天对自己的cms程序尝试进行了生成速度优化处理,方法遵循前一篇文章提到的路线。主要针对一些多个页面会重复使用的标签调用代码段进行缓存处理。

还好,俺的代码结构还是不错的,所以增加缓存功能修改不大,加了不到10行代码就搞定了缓存功能。大致原理嘛,就是解析一个标签时,先判断缓存里是否有相同的标签调用解析结果,如果有,直接返回该缓存结果代码段,如果没有,就继续解析标签,读取数据库,分析标签。最后解析完返回前,把解析的结果放入缓存。

重要的是如何快速索引缓存,俺想了个省事的方法,使用hashtable保存缓存数据,主键就用标签调用代码字符串的hash值,这样就不会有问题啦,哈哈。当然,有些标签不是调用代码一样就能直接进行缓存处理的,比如一些文章调用标签,属性用了list="sub",这样的话,如果直接按照标签调用代码计算主键去索引,肯定不对的,会重复的,因为list="sub"是调用当前列表的子栏目内容,那么,当前列表也要作为主键内容一部分了。这里特殊处理一下,记录。

第一次速度优化效果测试,使用access数据库,在俺的本本(配置一般,t42)上测试,cpu使用比较厉害,80%了,生成速度比以前有提高,但是还是很慢,13500篇文章,生成所有内容,包括列表和内容页,共耗时1小时40分,难道俺的方法不行,效果不明显啊。没法跟人家专业cms比啊,晕。

不灰心。

第二次速度优化结果测试,这次我换到台式机上测试,奔腾D 2.0 CPU,同样是access,这次实验没进行完,过程就让我郁闷了,生成速度还是照旧,跟本本上运行一样慢,好像比本本上运行还慢。查看系统资源使用情况,发现CPU使用率才3% !为什么不使用更多CPU资源呢,我没进行资源释放啊,尽量多抢占了哦?奇怪,这次实验没进行完俺就终止了程序运行。

第三次速度优化结果测试,总结前面的经验,思考问题所在。俺感觉,速度延时不在俺的程序,问题可能出在数据库查询速度上,因为accsss数据库反应速度慢早成CPU资源无法得到充分利用。换上mssql数据库,内容一样,还是13500篇文章,全部生成。启动生成操作,查看日志变化,哇哈哈哈哈,怎么日志变化这么块呢,一秒钟就生成好多文件,启动10秒左右时我看文件都生成了460个了,html文件都50m了,高兴啊,哈哈,等着。。。。 ,高兴太早,日志提示错误,进程被终端,一堆错误信息。怎么回事呢?难道太快了?不会吧。认真查看错误日志信息,应该是超时了,看时间大概运行了2分钟了,哦,这样啊,好解决。修改站点配置的请求超时时间,加大到60分钟,哈哈。重新开始生成,俺的心理没底,别再出错了。时间一分一秒过去,看看电视散散心吧~看电视都忘记看程序运行情况了,哈哈,看了半个电影才想到俺在调试程序呢,呵呵。查看日志,偶~~已经运行完了,哈哈,日志显示总耗时8分钟27秒。娃哈哈,这么快啊,可是13500文章啊,这是不是最终优化结果,好多标签都没优化呢。不是我看错了吧,查看生成的html文件,哈哈,的确是生成完毕了,只是html文件就210m大小了。

实验成功,哈哈,好高兴。看来数据库对速度影响很大,怪不得都说dede生成速度快呢,他用mysql当然快啊。access作为文件数据库,肯定没法跟mysql比了,但是mssql就不一样了,效率很高。当然,缓存作用很大,以前没使用缓存时,就算使用mssql数据库,生成这样大量的内容,还是需要几个小时的,差别太大了。

下一步,跟着这个思路,进一步优化我的代码,争取更大提升。当然,如果这个速度问题得以解决,俺就要完善俺的程序作为一个独立可发行的cms程序了,呵呵,方便自己,也可以发布出来让朋友玩玩。

« 交警大哥没罚我,哈哈!记录,今天又被百度拔毛 »
  • 1.wukong
  • 忘记说了,最后成功实验的cpu正常使用率大概在45%左右
  • 11/10/2008 7:43:44 PM 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By 空空如也 

Copyright 167-2009 www.7es.cn . Some Rights Reserved. Email:iamwgh@msn.com QQ:49556
Friends site:Null