欢迎您来到芯片的主页!

Welcome to Chipset's homepage!

共3页: 1 2 3 
一堆学术派闲的蛋疼总搞语法,没有一点实用价值。
就不能加点库吗?文件系统,通信,图形...
你把别人都秒了,别人还敢招呼你?唉,明明3你知道他说的不对,你也得点头说好。低调点,低调点...
随便拉出一个来就能秒天朝的 北*大学,清*大学到火星...
很有前途和很有钱途啊。
工作是做网络安全?
简单实用
remove函数并不是真正删除,而是取代,然后调析构,built-in类型没有析构函数结果就发现只是向前移动了一下,仅覆盖而已。
复制元素并非就一定不高效,对于built-in类型,复制比修改指针高效,毕竟程序设计里小对象比大对象常见的多。再说了,大对象哪里有动不动就拷贝的,那是设计失误。
vector的删除和插入都建议在尾进行,否则效率低下,因此就没有.pop_front这种货。
@编程小学徒
想考哪个学校,把往年专业课题买来看看,专业课基本就那个范围,如果能进入复试,把那个学校往年期终考试题目买来看看就能对付笔试。考研时通常考完政治,大家都觉不出好坏,考完英语考数学时考场人数剩下2/3,再考完数学考专业课时剩下1/3。在高中时怀着憧憬,等你读了大学你会觉得大学真是浪费青春,读大学对研究生憧憬,等你读了研究生你会觉得研究生真是浪费青春,但是跨专业报考是得到某个行业门票的一条途径。
程序是所有计算机课程的实际体现,但有两样最明显,算法和数据结构还有英语。前者是基本功锻炼缜密的逻辑,后者帮助程序员自学和解决问题更快。
为了混口饭吃,大家都不容易啊,原谅刷题的同学吧。话说学校里能教啥呀,都靠自己用心,有上进心才是最重要的,否则笔试面试再好也是白扯。从面试官的角度看考试没有错,换成我会找有潜力的或者上进心强的。
@QQ149853389
转的,有几分合理不合理我就不知道了,因为我对这个行业是陌生的。
pool不拼接内存,一块大内存被分割成很多相等的小块,此时调用分配一块较大内存可能失败,不是因为内存不够用,而是因为全是分割成小碎块不拼接导致的。这是Pool的致命伤。再者Pool的效率也高不到哪里,以不拼接小块换速度的做法不值得提倡。
苦海无边,终于熬出头了
Errata
The kernel type of Nucleus OS is Microkernel.
很难,除非绑架编译器,否则怎么能很方便的知道指针在栈上还是堆上?
这种对象指针默认转换中类型都丢了,析构的时候调用哪个系够函数?手工删除时就死悄悄,用智能指针当然也照样死悄悄。何止对象这样啊,C++里永远都是这样,如果自己想自杀,C++绝对成全你,这是Human Right!
耗费内存太多
很好的总结
@陈梓瀚(vczh)

谢谢。显卡蓝宝HD5750 GDRR5 1G显存,中端游戏卡,应该没问题呀。

看来我得查下后台看看谁在作怪。
VS2012功能丰富,想干啥都方便了很多。

缺点就是太大了,机器运行起来明显感觉慢。这微软弄那么多C#写的插件塞在里面,狂吃内存还拖慢速度,就为快速开发?我机器配置E3 1230,8G内存双通道,1T硬盘64M缓存,主板芯片C202,Win7 x64系统,不应该是机器问题,运行别的程序飞快呀。
@春秋十二月
做嵌入式。
语法越来越复杂,太多的人不得不浪费太多时间熟悉那些花哨的东西,工业语言是这么进化的吗??C++总会有一天死在这帮家伙们的手里。。。
加入thread和一些必要的库也就罢了。弄一堆形式上的写法无非少敲几次键盘,形式上看起来爽点,没有任何实用价值,感觉C++越来越花哨了。
这棵树如果自己实现就加个父指针,从当前节点向上走到根节点,这条路沿路节点做一下标记,然后从第2个节点向上走,第一次遇到曾经标记过的节点就是最近公共祖先,一直走到根节点都没遇到就属于不同的两棵树。

这种考试的题目极少有实用价值。
有时间试试gcc的unordered_map吧,注意版本号4.6.3以后的,4.6.2版本的哈希表比4.6.3的哈希表处理字符窜时慢的不是一点半点。处理大量字符窜,尤其字符窜很长时,因该比SGI_STL的哈希表快得多。gcc的哈希表处理整数可能比SGI_STL的哈希表要慢,主要是Allocator作怪。
@墨魂
Gnome和KDE都是应用,Linus Torvalds也在公开场合说过KDE做的很不错,否则在那个C的世界KDE早死了。

Qt的版本升级很快,看来很多人在用(如果没几个人用那还有必要频繁升级吗?)再想想Qt商业应用得花钱买版权,如果Qt跟GTK+比真的那么差,谁愿意花钱买不好的东西呢?用免费的GTK+(C)或gtkmm(给C++用)岂不更好?

顺便说下zjh贴的那段代码,我真看不出是C的。C89和C94没有//的注释符号,C99的规定是何年月啦,微软的编译器哪里能升级那么快?Win2K能赶得上吗?
@墨魂
Gnome和Xfce都用C,但是速度差别那么大怎么解释?很多事情跟语言关系不大对不对。再举个例子,Chrome,FireFox,IE都用C++来写,速度和资源消耗是不是也差别很大?这又怎么解释?
我再举个例子吧,MTL听说过吧,做计算的。做数值计算,C和C++没法跟Fortran比速度,同样的算法,速度得差20%,但是MTL开发出来后,尤其4.0以后把Fortran都秒飞了,你能说C++不行?那为啥不用C来做,如果C真的那么快?

任何语言都有优点和缺点,否则某种语言早就一统江湖了。。。
@zjh
Java写系统还真有,也不是什么毕业设计。你可以谷歌下JNode,除了一点汇编,其它全是用Java写的。
至于你说把虚拟机固化到芯片里,虽然我没见哪家这么干,但是我确实听说有的ARM芯片可以直接执行字节码。

我们做嵌入式,芯片的计算能力非常有限,内存也跟台式机没得比,是很在乎资源消耗的。以前一直认为C++比C慢很多,耗费资源也多,关于C和C++之间的速度差别查阅了很多资料,评测过N次,发现几乎没啥差别。

C++的缺点是很明显的,新手很容易写出垃圾代码,速度慢耗费内存多,但优点也很明显。我们目前做的一个程序大约2百万行源代码,C++代码大约90%以上,C代码大约5%,还有1%不到的Lua。如果C++的部分也用C来做,你想想源代码量会有多大,维护起来会有多痛苦...
@zjh
这里有个简要的图和介绍,我不明白你指代那一部分:
http://en.wikipedia.org/wiki/Architecture_of_Windows_NT

用C++写操作系统内核不是新闻,用Java写的都有。。。

这里有用什么语言编写的介绍:
http://www.lextrait.com/vincent/implementations.html
这里也可以查到:
http://www2.research.att.com/~bs/applications.html
就说NT吧,不是微(micro)内核,也不是单(monolithic)内核,应该算Hybrid。你可以搜索到NT架构,我也不清楚你说哪一部分。HAL层我估计应该用汇编,据说这些汇编主要来自一个祖籍台湾人的贡献(你可以了解一下微软的历史,那几个技术鼻祖)。再上面一层(Kernel mode drivers 和 micro kernel),古老的代码应该是C写的,后来改写的代码是C++的,再上面也是这样,古老的代码是C的,后来的是C++的。其实不仅Windows,Office也是这样的,最古老的代码是汇编,后来的用C,C++出现以后所有的新东西都用C++来写。你不是有win2k代码吗,你最好找到我说的那一层看看是不是这样。
@zjh
建议你谷歌一下吧,或问微软的架构师,感觉这玩意没啥好争论的。
@墨魂
如果你还要比,我还能给你举出更多例子说明C++比C快,耗费内存也少,如果有人说C++比C快耗费内存少,我同样也能举出很多反面的例子。。。
@墨魂
唉,那个排名能说明个啥呀,跟效率没关系是不是?
其实C++和C速度上没差别,你可以看下struct和class的内存布局,内存布局都一样,哪来的速度差别呀。。。
C++唯一慢的地方是虚函数(C没有),需要查虚表,就一两条指令的开销带来的好处是不言而喻的。。。
至于Gnome和KDE,画面质量不同,内存和计算量相差那么大,比速度和内存有意思吗?你咋不拿控制台给Metro比速度和内存呀。。。
C++是有很多缺点被很多人指责,编译慢,语法太复杂,新手很容易写出烂代码。。。这都是真的,但是不恰恰说明很多人在用C++吗?否则怎么可能发现这么多问题呢。。。就如同我们天天骂windows一样,你见过几个人骂Linux?没有几个人用,哪里能发现那么多问题。。。
@zjh
顺便给你扫盲一下吧。微软的所有产品(除了.net框架的一部分基类用了C#),其余是一色的C++程序,就连C#编译器都不例外,当然了,个别地方有点Intel汇编。
若干年前Windows Phone上尝试了一下用C#写了个软键盘程序,发现速度太慢,最终只好又退回到C++。DOS是用汇编写的,从Win95以后,都是C++代码外加少量汇编。Win2K的代码泄漏过一次,不知道现在网上是否还能下载到,是用C++写的,这个能看到。

不要觉得WinAPI是些C代码就认为Win内核是用C写的,你可以去问微软的架构师。。。
唉,我说楼上的那位。Win内核是用C++写的,少量Intel汇编,你去问微软的架构师好了,我不解释。。。
http://www.phoronix.com/scan.php?page=home
这里有很多比较,有硬件的,也有软件的。
至于你文中提到的C++抛出异常,我真想知道有多大开销,问题是你抛什么异常,怎么抛异常,怎么处理异常。根据经验,异常处理会难倒很多C++老手,所以我怀疑你怎么使用异常,会不会很好的使用。
C语言稳居什么排行榜的事情跟效率有关吗?既然C那么好用为何比排名第一呢?你不觉得你那种论断荒唐吗?
至于你提到的图形库,GTK+和QT,这玩意怎么比呀。作出的图形不同的画质计算量会千差万别。都是用C写的界面,GNOME和XFCE速度相差很大,这怎么解释。即使如此,KDE也未必比Gnome慢哪里去,还在上面那个链接,你自己看。
C语法和用法相对比较简单,C++语法和用法相对复杂,或者说看你会不会用C++罢了。小程序比较快慢没有意义,上下差不了几个毫秒,可以看成误差。我们还是比个比较大的程序吧,你觉得最新的Linux系统显著比最新的Windows快吗?前者是C写的,后者是C++写的。测试了很多项,都是常用的,除了文件读写外(EXT4对NTFS,个人觉得是格式问题),其它项Linux全军覆没。在Linux一个网站上比较的Ubantu和Win7,自己谷歌一下吧,我不解释。
小的容易做到,boundary tags, bitmap, freelist都行,大的需要比较复杂的数据结构,建议用PTrie,你可以参考下DLMalloc,谷歌下。

如果多处理器并行环境,那就非常困难了,传统的并发控制机制会成为瓶颈,还要小心False sharing, blowup...,你可以参考下JeMalloc,谷歌下。
不像楼主说的那样,我们这里女程序员就算占不到1/2,肯定超过1/3
需要用到直接插入排序,堆排序和三点取中找支点,然后分割,有点麻烦,到这里去看怎么优化的:
http://www.cppblog.com/Chipset/archive/2011/08/16/153546.html
或者把STLPort代码下载下来去里面找,原理是一样的。
我主页上有常见的14种排序,如果单线程的话,快排是最快的,多线程需要重新设计,太麻烦,最容易实现并行的排序个人认为是归并排序。
你的速度不行,数据结构书上的更垃圾。
如果你家是东北的,我可以推荐你来我们这边做嵌入式,不知道你是否有兴趣。
@123
啥意思啊,对天朝没信心?
re: 考研是条不归路[未登录] Chipset 2012-01-19 16:46
深思熟虑后既然走上这条路就要坚持走下去直到达到目的,不能半途而废,也就是说"不归"。
@.
猴子排序理论上最坏情况下时间复杂度为无穷大,最好情况为O(n),一般情况为O(n*n!)。可见确实比我的蜗牛排序慢。

猴子排序伪代码如下:
while (没有排好序)
打乱当前序列的顺序;
re: 考研是条不归路[未登录] Chipset 2012-01-05 12:55
@zuhd
这是转贴。我不是从物化专业转过来的,我是从机械转到计算机的。
很同情博主经历,很佩服博主自强不息的精神。

工资跟当地生活水平相关,跟做的事情相关,跟周围环境或者说公司本身相关。

估计你的某句话或某几句话得罪了某几个看客了,以后说话谦虚点,做人低调点就是了。

唉...
内存管理系统的事情,对C++要求这么高,是不是太过分了。new就是一个壳,调了API。当然,最好别重载全局new,局部的我看也最好别重载。一般程序new就足矣,多CPU并行和吞吐量的程序,只能自己来管内存,否则慢也就罢了,还出一堆碎片。

系统管理内存都做不到完美,指望语言级别依赖于实现的new能做好?看看系统内核每次升级,有多少改动发生在虚拟内存管理器...
共3页: 1 2 3