专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » 低级语言:语言越低级 运行效率就越高吗? »正文

低级语言:语言越低级 运行效率就越高吗?

来源: 发布时间:星期六, 2009年9月12日 浏览:5次 评论:0
本来我是要继续写我foreach系列文章另外两篇但是看了评C#事件处理些感触

我区别意大家有关语言越低级运行效率就越高说法
语言越低级编译器能够决定东西就越少就越不能很好优化执行代码大家想想为什么c语言编译器般都忽略register关键字C般都忽略inline关键字? 很多时候编译器只要掌握了足够信息就能做出明智决定
以前我测过delphi和C生成代码delphi代码比C高效得多C/C里广泛使用了指针对于变量位置struct中各个成员排列思路方法约定对于编译器都有非常严格限制编译器只能忠实翻译错失了很多优化代码机会为了能够享受各种代码优化技术C编译器都提供了非常多编译优化选项但是绝大部分都不是100%安全C/C员总是可以越权完成很多低级操作比如:用const修饰变量是不会被修改编译器可以利用这个知识将这个变量值缓存Cache在寄存器中但是在C就不能做这项优化C员可以强制cast掉const限制也许大家认为编译器能够监测到这种cast自动关掉这项优化但是谁能保证其它.obj文件里代码有没有修改这个const变量呢?

同样类私有成员在C中也很难真正实现访问跟踪编译器没有100%确信知识如何能去优化呢?

世界上最好汽车是手工打造但是不是说手工打造汽车就定比工业批量造出汽车好

我想写最重要是如何最清晰表达我们要解决问题而不要过多体现解决问题次要细节我们要是报表、订单;而不是内存指针如果我们能从更高、更抽象层次描述问题就会留给底层软件Software更多发挥空间比如底层软件Software可以选择低运行效率极高开发效率思路方法完成功能而快速制作原形展示设计;或者底层软件Software选择高速运行策略面向运行时间要求高场合;或者选择低内存占用作为目标等等

规则不是约束创造性地力量而是激发创造性地基础没有稳定规则哪里会有什么创造?我认为.net规则是激发创造开始个新世界开始

有人质疑C#完成事件模型太隐晦臃肿和il不直接对应太复杂event关键字完成了多播事件、异步事件想想java为了实现多播事件明确使用了列表虽然C#也使用列表实现多播但是使用列表这个事实并没有明确在语法上体现出来这有什么区别呢?这当然区别!在delegate中只有指针时这个列表是不生成而且也是直接并没有循环另外C#通过delegate还可以实现异步事件了异步I/O编程模型最近Ado.net也执行异步执行sql语句了Java事件erface实现要完成异步事件不知道要使用多少代码而且只要代码旦写成它就死了运行环境就不能再做进优化了

比如做出租车如果告诉司机你目标地点司机就可以综合道路长度、拥堵情况、路况情况选择个优化解相反如果告诉司机你路线那么切都固定了僵化了司机拥有再多知识都无法用上了高级语言和低级语言的间差别就和这个现实生活例子是个道理也许很多人区别意认为自己既是乘客也是司机但是你认为自己真对所有计算机知识都了解吗?CPU区别Cache效率区别总线效率区别硬件影响软件Software要素已经非常多软件Software影响就更多了现代软件Software会依赖大量操作系统、库、编译器等等谁能知道在数以万计个效率高个效率低我们优化了数周代码获得性能提升会被个设计糟糕轻易吞没就算优化好了个系统个环境还是效率高吗?比如用户机器更换了显卡驱动?谁都不会有能力做个好司机

让真正拥有实际运行知识C#语言、.net运行环境来替我们完成95%性能优化吧我们能做个好乘客说清楚我们就是极大成功了



  • 篇文章: 用端口截听实现隐藏嗅探和攻击( 2)

  • 篇文章: Serv-U ftp server 密码算法
  • 0

    相关文章

    读者评论

    发表评论

    • 昵称:
    • 内容: