误人子弟了吧。 能非常稳定运行,能实时调试的程序,100行里面有1行做所谓的”正事“就不错了。好的程序应该可以调试的时候运行100行的代码,试运行的时候运行10行的代码,正式投产运行的时候运行2,3行的代码,实时调试的时候又可以运行100行的代码。 照你上面的观点搞出来的东西,性能和稳定性,调试和维护方面的问题太多了。至少我是不会用的。 100行优化成10行,要搞也是由编译器或硬件去处理更高效。
100行只有一行做事那也夸张了...一般是2/8原则。 20%的代码做事,80%的代码做外围工作。 同时,这20%的代码占据80%的运行时间。 扯到优化的话,事情就说不清了。比如如果是性能优先,代码量很可能会变很大,比如循环展开,宏定义展开,代码量马上就翻上去了。代码并不是越少跑的越快的,恰恰相反,现代CPU十分强劲,跑代码只是最容易的事情,就算代码量翻10倍,也不是瓶颈。如果把CPU的1hz当作一秒,那么CPU每秒都可以做一次加法/乘法计算,但需要3秒去访问L1cache,14秒来访问L2cache,3分种多的时间来访问内存,1年多的时间来读取硬盘。 所以影响速度的因素主要是各种IO,因此所谓优化并不是消减代码,而是合理的安排代码和数据,哪怕表面上看来很浪费。比如浪费点内存,把数据对齐,可以大幅度提高内存访问速度;比如循环展开,用10倍/20倍的代码量来填满CPU的指令流水线,等等。 另外,代码量只是个很虚的概念,一般认为写满20W代码量算是非常熟练的程序员。就像是你看了500本书一样,只是表示你有这么多经历,不是说你看了500本书,就能成为优秀的作家,可以自己写经典书了,相反很有天赋的人可能没多少阅读量,但写下来的直接就是经典。 偶还是不相信百万代码量。偶自己也只敢说,偶大概有20W代码量...没真正计算过,也许还参杂了水分... 长时间的coding是伴随着长时间的思考的。宏观的看,一个项目coding的时间最多也只能是30%。更何况长时间的高强度工作也是不可能的。100米能跑13秒,跑个10000米再试试看...
俺这是心理疾病啊...偶自我分析是缺乏安全感的表现~ 小时候最喜欢看《神秘岛》,然后就会经常幻想如果我被一个人丢在一个荒岛上,该怎么办... 然后下意识的,就会去从最基本地方开始去学习各种各样的知识... 所以我学东西喜欢追本溯源,考虑的都是没有任何帮助和条件的情况下怎么办的问题...
看来是同道中人...先握一下手~ 忍不住回个贴~(曾经狂热研究OpCODE,后来发现CPU走多核心并行了,就放弃了...你小时候应该也想过要编撰一本涵盖所有普遍知识的书的想法吧~,后来,有了维基,也就没必要了...只有数学那块,偶还在坚持<感觉数学发展方向似乎有点问题,目前在arithmetic algebraic geometry和Elementary number theory两头往中间收缩>,呵呵是有点怪~)
恩...小时候的目标之一是掌握人类所有的自然科学知识...后来才知道人类只有在亚里士多德时代能做到这一点。现在么...我高中的时候把学校图书馆所有自然科学类别的书一本不拉的都看完了,但还是不得不说这个目标太大了。如今即使在我最擅长的CS领域里,也远不能说掌握了所有的知识... wikipedia虽然是个好东西,但快速的查询到知识,只是相当于把知识装在脑子里而已,缺乏理解无法触类旁通的话,还是不属于你的死知识。 偶数学很差的,以前就说过偶是野路子~偶更适合当工程师~偶现在的理想是,在有生之年造一艘飞船,把我的骨灰运到黑洞,偶十分的想被埋葬在黑洞里~~(以现有技术是完全可能的,开销也并不是无法承受的天文数字,只是要花费许多许多许多时间,并且要好的运气而已...)
这个我觉得未必,因为交易系统的实现本身并不复杂~并且任何付出都不会白费,都会有回报。 等我忙好手头的事情,我下一阶段很有可能抛弃以前的东西重新从零开始再次构建整个交易系统。 但这一次我对这个问题的理解会比上一次深很多。 我觉得不用过于害怕重构,doom这么经典的游戏在发布之前就重写了7遍。重构本身就是思维自我提炼的过程。只要把代价控制在可接受的范围内就行了~