超过O(n)时间复杂度的算法都是在耍流氓

超过O(n)时间复杂度的算法都是在耍流氓,借着机器性能好,你就能够不考虑算法复杂度了?就能够 O(n^2),O(n^3)嘛。。。 算法

什么狗屁数学,什么狗屁学术,就是你本身编码水平太滥,才须要更强大的硬件。 数据库

一台服务器你用了不爽,要用十台。。要用千台。。干呀。。 服务器

你要1TB的传输量,一台机器硬盘IO怎么也得80-100MB/s, 1TB除下不就行了。 用这么多硬盘就行。为毛要比这个多得多的硬件。。。 数据结构

还有CPU和内存,总是想码几十万行代码,我靠,那种功能,几万行就能解决好了,并且还用更高效的算法,O(logn)就搞定,你非要整个o(n^2),试问你是在应用,不是在学习。。。 memcached

还有,你想要效率,又不想学C,每天搞Java,你搞毛线呀。。。    性能

Java动不动就几MB,几十MB的内存占用。。各类虚拟资源,你看C。。程序很小很小,3000行的代码,只有100KB。。。。  1MB得要多少行C代码。。而内存占用,从不含糊,须要多少就用多少,不会多一点乱用的内存。。。 学习


还有如今开源好多也是这种风气。。。不考虑高性能。。  一秒种,插入10万次到磁盘,很艰难。 而要作到一秒插入30万条(78字节一条)磁盘,更难。 编码

通常的开源软件,能到一万条就不错了。。。 内存

哎,开源的东西,好多把高性能给放弃了,就算用了高性能,也须要大量的硬件,如:Hadoop。 资源

memcached,内存里的数据库,居然,一秒只能插入10万条,硬盘速度是80-100MB/s,能插入30万条每秒,内存速度是18GB/s, 难道,你memcached不该该插入更快点嘛?用那么多资源去计算,申请那么多临时变量。访问那么屡次内存。这就是在减速! 这是罪过。

不吐不快,所谓的业界内的高性能?在开源,哪里有。

在喷Linux,都知道,Linux的驱动,核心是链表组织的,假如一台机器有千台设备,那访问得有多慢。。

若是有万条。。这时间复杂度,就是O(n),有十万个设备的机器,别活了,像:高达这种机器人。应该很轻松有10万个设备,驱动的组织方式,仍是变成红黑树吧。  不过这个结构,占时仍是Linux内存的子系统在用。

众多的人,受到业界某些所谓的大牛的影响,写些很糟糕的算法。作糟糕的数据结构。

记得有我的这么说:当N很小的时候,使用o(N)和使用o(logn)的区别不会很大,但是,若是业务须要N忽然增长几个数量级怎么办? 程序使用了o(N),这个怎么改。改的代价是多少。。

还有KISS,这个原则,有的时候真得就在起副作用,KISS到极限的代码,很容易就会使用糟糕的算法,糟糕的数据结构,我的经验认为,KISS应该保持一个复杂度,但这个复杂度又要能考虑到业务未来的数据量级的上升。

相关文章
相关标签/搜索