主题:【原创】猛批烂书 程序员面试宝典 上 -- 晨池
因为我们做图像视频,很多时候需要用矢量指令,按照cache大小和结构进行优化,所以对体系结构、编译优化都比较感兴趣。有时候需要优化程序,要选择下手的地方,所以得分析编译器的输出,看看瓶颈在哪里。
inline的问题,是各个编译器支持的很不相同。而且如前面有人说的,它仅仅是一个hint。要不要其实不重要。所以现在我写程序基本上不考虑这个。现实而言,Borland的支持很弱,基本上有没有无差别。而且,Borland的编译器要求inline函数必须在头文件中定义,这就导致很多问题。VC支持还可以,且有优化选项,让编译器自动选择小函数做inline。所以差别也不大。其它的用得不多,不是很清楚。
STL的最大问题是它搞得太复杂了,用起来类似于高射炮打蚊子。而且一个非常严重的缺点是,把所有数据结构都搞了一套大致差不多的接口。我用不同的数据结构目的就是用不同的功能,你搞成相同的,我怎么知道你是啥意思啊?所以这玩意对初学者就是满眼的地雷阵。我收上来的作业中,这些错误实在太多太多了。对高手,这玩意又是一个鸡肋,功能虽然强大,但在每次使用的时候,都免不了要写过于复杂的适配代码,而且还没把握写得对不对,更不知道其内部实现算法是否符合预期。还有,不同STL的内部实现差别很大,虽然接口相同,却往往导致不兼容。所有这些问题绞在一起,我非常不建议使用这些东西。再说,实现这些结构都非常容易,每个人都应当有自己的一套库,这样用起来显然是最顺手的,和乐而不为?
- 相关回复 上下关系8
压缩 2 层
🙂The C++ standard library 假设 字218 2010-11-24 01:56:09
🙂嗯,关于inline那个,我确实不知道宝兰是如此处理的 晨池 字581 2010-11-11 06:39:02
🙂__forceinline 假设 字189 2010-11-24 02:11:47
🙂我只是对体系结构比较感兴趣
☹️没记错的话,STL vector使用array实现的~~ 重火力熊猫 字89 2010-11-08 16:16:34
🙂估计是转成浮点了 相信逻辑和常理 字45 2010-11-12 18:59:05
🙂能展开点不? 晨池 字91 2010-11-11 06:40:35
😥某些情况下Cmath的pow会返回奇怪的double 1 重火力熊猫 字75 2010-11-12 04:49:13