Open,记录,分享  for 积极自由的生活方式

下午和erik同学讨论拖动组件的性能优化问题时,看到他不同的思路,在对需要拖动并排序的情况下,通过对当前拖动模块和各个已存在的同级模块之间的距离计算来完成排序判定,于是回来一直想每次鼠标移动的事件都要计算((x1-x2)2+(y1-y2)2)^2,是否还有优化的余地,于是很夸张的花了20分钟在草稿纸上进行数学演算,以证明是否能通过消去乘方来得到一个与x1+y1和x2+y2的大小有关的近似比较结果,而最简单的数学完全平方公式至少证明了4个事实:

  1. 我的猜想是错的;
  2. 我花了半天时间证明了不可行性;
  3. 我的数学连高中水平都不如了;
  4. 我患上了erik所说的程序员的强迫症和妄想症!

强迫自己的去对js这种本来就低效的浏览器程序进行吹毛求疵优化,妄想能通过很微弱的计算量的优化来带来性能的提高。结果erik发来的几行程序给了我重重的一拳:

var t1 = new Date();
for(var i = 0; i < 100000; i++) {
var test = Math.pow(567,2) + Math.pow(567,2);
}
alert(new Date() - t1);//500-600 in IE, 400-500 in FF

20w次的的开方运算也就花半秒不到的时间,这样的量级,就算前面那个例子把开方运算去掉,这种优化简直微不足道,在浏览器环境下完全不值一提。而平常总是为了“优化性能”而连循环都反着写:

for(var i=array.length-1;i>=0;i++){
//...
}

目的是好的,但看来我也的确患上了强迫症和妄想症。不过幸得erik同学的点化,js的东西只要不造成循环引导致的内存泄露,稍微注意一些一般是没有问题的,今后少做这种无聊的事情。当然也不能完全不考虑效率,推荐一篇文章“如何优化JavaScript脚本的性能”(终于找到出处),我觉得看后一定会逐渐变得像我现在这样强迫自己做BT的事情。但到了最后写程序还是应该把更多时间投入到架构上,这才是真正能提高境界的地方。

换个思路,克服程序员强迫症。

Comments

vsky Comment at 2008-01-15 11:20

下载工具中,来转转~~哈哈
我也发现自己有这样的症状啊,不过还好 现在慢慢在克服了,毕竟我们做的是产品,效率上的优化可以一步步做,不必要吹毛求疵而耽误了整个进度,更何况我们花几个小时研究出来的东西效率启示并没有提高多少 哈哈

Re:
对,目标是以用户为中心,而不是以技术为中心

erik Comment at 2008-01-19 3:09

恩,投入架构上,不错,这个思想是个不小的进步

Re:
嘿嘿,向erik同学学习!

o2sky » 过年流水帐 Pingback at 2008-03-01 22:55

[…] 回来前几天和流氓狗子小叙了一阵,发现自己不仅有程序员的强迫症, 还有了博客强迫症(借用狗子的话“坐在马桶上都在想写博客”)。。。很不爽,想改变以前散漫的生活状态,不想每天浪费时间,想让自己过的充实些,结果又矫枉过正,搞的自己连上网随便看看或者玩会儿游戏都觉得在浪费时间,而且自己紧张到最后还是什么都没做成,心累的要命。。。难道就是极右后的极左? […]

Tony Comment at 2008-06-19 15:05

貌似得这个的人不少
我也有点

Write a comment: