面试遇到的有关问题
面试遇到的问题以下程序有何利弊C/C++ codefor(....){if(...)conditionelsecondition}//另一个if(...)fo
面试遇到的问题
以下程序有何利弊
C/C++ codefor(....){ if(...) condition; else condition;}//另一个if(...) for(....) condition;else for(....) condition;
求解
[解决办法]老题了,第一个逻辑明确,但循环内存在分支可能会降低缓存命中率,降低效率
第二个正好相反
其实无所谓,有些编译器优化过之后二者速度一样的,你除非测试过你的开发平台确实速度差异很大(注意要加优化,debug版测试来的速度没有任何参考价值),否则别做过早的代码优化,真正能起到优化代码作用的,时间少手动内存分配次数,优化IO策略,应用更好的算法等
[解决办法]高质量C++编程里的
前者可读性好,效率略逊于后者;
后者可读性逊于前者,效率高于前者。
[解决办法]C/C++ code 1 在循环里面进行判断 使得程序不停地进行循环时要执行判断 影响效率 程序员易读,不利于编译器优化 2 在循环外面进行判断 判断之后直接进行循环 计算机最爱做的就是 重复循环工作 效率高,可读性差点,但有利于编译器优化。
[解决办法]
可读性一说不成立。在某些情况后者可读更好。这要看程序的真实逻辑。
[解决办法]
一个好看 逻辑清楚 ;另一个效率高!
[解决办法]
[解决办法]
代码量大的时候,代码的简洁清晰很重要,尤其维护的时候,这种数量级的效率差别根本不予考虑
[解决办法]
代码简洁性可以通过其他方式达到 效率才是硬道理
如果是一些机械的代码 又多又不得不写 规律又差不多
甚至可以也个生成代码的工具 自动生成
程序写得再好看 跑不起来也是白搭啊
当然 这代码两种随便写一般不会导致灾难性结果
[解决办法]
[解决办法]
这个只是效率稍有差异。
[解决办法]
一易读但效率低
二效率高但不易读...
[解决办法]
提醒:条件有时在循环过程中是会发生改变的。
[解决办法]