文档章节

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

z_zhang
 z_zhang
发布于 2013/06/16 11:37
字数 846
阅读 285
收藏 8

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

什么狗屁数学,什么狗屁学术,就是你自己编码水平太滥,才需要更强大的硬件。

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

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

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

还有,你想要效率,又不想学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应该保持一个复杂度,但这个复杂度又要能考虑到业务将来的数据量级的上升。








© 著作权归作者所有

z_zhang
粉丝 1
博文 1
码字总数 846
作品 0
南京
程序员
私信 提问
数据结构算法和算法效率评价

一、算法的基本概念 算法(Algorithm):是针对特定问题的问题求解步骤的一种描述。它是指令的有限序列;算法具有如下五个重要特征: 1.1、有穷性:有穷步骤,有穷计算时间; 1.2、确定性:每...

sinat_38321889
2017/11/24
0
0
《数据结构》学习笔记二:算法(二)

继续上节的学习,我们在这一篇文章里把“算法”这一章内容学习完。 本节解决问题: 算法的好坏到底是如何评估的? 知识点: 1.函数的渐进增长 2.算法的时间复杂度 3.常见的时间复杂度 4.算法...

小曼Study
2018/10/12
0
0
MySQL load data infile into table 的使用

常用如下: Load Data InFile 'C:/Data.txt' Into Table Lines Terminated By 'rn'; 这个语句,字段默认用制表符隔开,每条记录用换行符隔开,在Windows下换行符为“rn” C:/Data.txt 文件内......

steven
2016/02/22
21
0
【译】Swift算法俱乐部-队列

本文是对 Swift Algorithm Club 翻译的一篇文章。 Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下...

Andy_Ron
2018/09/16
0
0
load data file使用详解

我们常常导入数据!mysql有一个高效导入方法,那就是load data infile 下面来看案例说明 我们常常导入数据!mysql有一个高效导入方法,那就是load data infile 下面来看案例说明 我的文章一般...

zuihoudebingwen
2013/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos 查看删除旧内核

1、查看系统中安装的内核 $ yum list installed | grep kernel 2、删除系统中旧内核 $ yum install yum-utils$ package-cleanup --oldkernels --count=2...

编程老陆
35分钟前
7
0
ES6

ES6:不改变原理的基础上,让API变得更简单 一、let:代替var用于声明变量 1、var的缺点: (1)声明提前 (2)没有块级作用域 2、let的优点: (1)组织了申明提前 (2)让let所在的块({}),...

wytao1995
今天
3
0
kubernetes 环境搭建 —— minikube

创建集群 minikube start 搭建好 k8s 集群后,可以查看集群的状态以及部署应用。主要用到的是 k8s 的 api,这通常需借助于 kutectl 命令行工具 基本操作 kubectl versionkubectl cluster-i...

lemos
今天
9
0
关于js混淆与反混淆还原操作

使用js的混淆加密,其目的是为了保护我们的前端代码逻辑,对应一些搞技术吃饭的公司来说,为了防止被竞争对手抓取或使用自己的代码,就会考虑如何加密,或者混淆js来达到代码保护。 1、为什么...

开源oschina
今天
11
0
用盛金公式解三次方程(ansi c版)

/* cc cubic.c -lm gcc cubic.c -lm Shengjin's Formulas Univariate cubic equation aX ^ 3 + bX ^ 2 + cX + d = 0, (a, b, c, d < R, and a!= 0). Multiple root disc......

wangxuwei
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部