Programming languages “从性能角度看”的影响是什么;如果;陈述

Programming languages “从性能角度看”的影响是什么;如果;陈述,programming-languages,performance,Programming Languages,Performance,我的朋友说,为了提高效率,他试图用尽可能少的if/else语句进行编程。当我问他为什么说if/else在该项目的资源中占有相当大的一部分时,他试图远离这些资源 他说得对吗?有没有更好的方法来执行if/else样式的代码而不实际使用该结构?交换机/机箱结构是否更好 编辑:他指的不是一种特定的语言,而是一种普遍的做法。以及UNIX/Linux和Windows平台。switch/case语句与所有现代优化编译器的if语句具有相同的速度 您的好友正在编写意大利面代码。switch/case语句与所有现代

我的朋友说,为了提高效率,他试图用尽可能少的if/else语句进行编程。当我问他为什么说if/else在该项目的资源中占有相当大的一部分时,他试图远离这些资源

他说得对吗?有没有更好的方法来执行if/else样式的代码而不实际使用该结构?交换机/机箱结构是否更好


编辑:他指的不是一种特定的语言,而是一种普遍的做法。以及UNIX/Linux和Windows平台。

switch/case语句与所有现代优化编译器的if语句具有相同的速度


您的好友正在编写意大利面代码。

switch/case语句与所有现代优化编译器中的if语句具有相同的速度


您的好友正在编写意大利面代码。

与switch/case相比,If语句的速度确实较慢。下面是苏的一个很好的解释:

以下是一篇有趣的文章,从C#的角度探讨了一些细节:

,根据您编写的程序类型,很可能还有其他因素需要考虑,例如算法设计或I/O量或需要的网络流量,这将对性能产生更大的影响。除非这些条件语句被称为数亿次,否则编写干净、可读的代码并专注于对性能有更大影响的问题,您可能会获得更大的回报


祝你好运

If语句相对于switch/case来说确实很慢。下面是苏的一个很好的解释:

以下是一篇有趣的文章,从C#的角度探讨了一些细节:

,根据您编写的程序类型,很可能还有其他因素需要考虑,例如算法设计或I/O量或需要的网络流量,这将对性能产生更大的影响。除非这些条件语句被称为数亿次,否则编写干净、可读的代码并专注于对性能有更大影响的问题,您可能会获得更大的回报


祝你好运

通常,编译器将if/then/else构造表示为测试,然后跳转到代码中的另一个位置。对于任何处理器来说,这都是非常标准和优化的操作。除非你是用标准编译或解释语言以外的语言编程,否则你朋友的结论是有严重缺陷的


此外,在这个级别上优化代码而不首先对其进行分析(找到慢位的位置)是很好的,也是不明智的。(更像是完全浪费程序员的时间。)

通常,编译器会将if/then/else构造表示为测试,然后跳转到代码中的另一个位置。对于任何处理器来说,这都是非常标准和优化的操作。除非你是用标准编译或解释语言以外的语言编程,否则你朋友的结论是有严重缺陷的


此外,在这个级别上优化代码而不首先对其进行分析(找到慢位的位置)是很好的,也是不明智的。(更像是完全浪费程序员的时间。)

一个草率的程序员可能会编写严重依赖于几种类似条件的代码,而查找表是更好的选择。故事的寓意:避免不必要的分支(尽管这应该是显而易见的)


由于分支而导致的慢化通常是由指令管道暂停引起的,尽管这种慢化的严重程度取决于体系结构。

一个草率的程序员可能会编写严重依赖于几种类似条件的代码,而查找表是更好的选择。故事的寓意:避免不必要的分支(尽管这应该是显而易见的)


由于分支而导致的减速通常是由指令管道暂停引起的,尽管这种减速的严重程度取决于体系结构。

正如许多人指出的那样,大多数现代(C/C++)编译器都能以最佳方式处理此问题。你可能对这个链接感兴趣 将大开关语句转换为嵌套开关


添加了关于如何使用switch语句的更多要点

正如许多人指出的,大多数现代(C/C++)编译器都能以最佳方式处理此问题。你可能对这个链接感兴趣 将大开关语句转换为嵌套开关


添加了关于如何使用switch语句的更多要点

现代应用程序可以包含数千行代码。 这段代码充满了对数据库例程、数据结构库函数、文件I/O、套接字I/O、窗口函数等的调用

因此,在运行代码时,如果您对其状态进行一系列快照,它几乎总是在应用程序程序员没有编写的某些函数中。 程序计数器在程序员自己的代码中占10%、1%甚至更少的时间是非常典型的

因此,在应用程序代码中进行任何优化,以在这里保存一个周期,在那里保存一个周期,只会在程序计数器在该代码中的一小部分时间内具有相关性-在该类型代码中的时间介于很小和很小之间


因此,虽然switch语句如果有足够的分支,可能会节省一些周期,但有一种透视感是很有用的。

现代应用程序可以包含数千行代码。 这段代码充满了对数据库例程、数据结构库函数、文件I/O、套接字I/O、窗口函数等的调用

因此,在运行代码时,如果您对其状态进行一系列快照,它几乎总是在应用程序程序员没有编写的某些函数中。 程序计数器在程序员自己的代码中占10%、1%甚至更少的时间是非常典型的

因此,在应用程序代码中进行任何优化,以在此处保存一个周期,在那里保存一个周期,这些优化只会在程序计数的那一小部分时间内具有相关性