首先,让我们记住,在任何编程语言中的所有代码操作,都要在某个时刻(无论是在运行时还是在编译时)被提炼成它们的机器代码等价物,以便实际执行,因为处理器(例如CPU)只理解机器代码,而不理解C#、JavaScript或Go。
考虑到这一点,我们可以将这两个表达式分解为更接近其基本部分的部分:
A<=B
正好是一个操作,不能再分解了A
是一个以上的操作,它(不需要复习计算机体系结构)大致分解为:
- 计算
B+1
- 将
B+1
的答案存储在缓存中(我们将其称为C
)
- 从缓存读取
C
- 然后计算
A
换句话说,如果比较操作需要x
时间,而添加/存储/读取一起需要y
时间,那么我们可以肯定地知道x+y
时间大于x
时间,因为我们知道x
和y
都是非零的(没有操作需要零时间)。
千万别忘了,过早优化是万恶之源。您不应该关心这种级别的优化,因为它几乎可以保证无关紧要。CPU速度很快。你的时间和劳动更好地花在更明显的密集和耗时的操作上,并且只有当你注意到它比你想要或需要的慢的时候。
如果您愿意,这里有一个实际的基准测试:https://jsben.ch/kvrug。它在多次运行中返回不一致的结果,这有助于说明为什么这对实际使用来说并不重要。像往常一样,有一些边缘情况下,这个级别的优化可以发挥作用,但总的来说,这只是无关紧要。
实际上,我正在通过其中一个教程,其中提到,当我们需要实现比较器接口时,我们可以覆盖equals方法(但是没有必要覆盖)。 所以,只是为了更好地理解 我重写了下面的方法 测验JAVA MyComparator.java 导入java。util。比较器; 对于其他场景 现在不管我从equals方法返回什么,不管是真是假。。它返回相同的树集值。如果有人能澄清equals方法的函数性的概念,请
我12哟,我学习Java,我想做如果语句时,它是超过1和小于或等于4,或只是2和4之间,但它不工作。我试过了 <代码>如果(4 它显示了这个错误
本文向大家介绍关于C++中定义比较函数的三种方法小结,包括了关于C++中定义比较函数的三种方法小结的使用技巧和注意事项,需要的朋友参考一下 C++编程优与Pascal的原因之一是C++中存在STL(标准模板库)。STL存在很多有用的方法。 C++模板库中的许多方法都需要相关参数有序,例如Sort()。显然,如果你想对一个集合进行排序,你必须要知道集合中的对象,那个在前那个在后。因此,学会如何定义比
“如何根据员工对象的id或名称对集合进行排序”。为此,我们可以使用两个接口,即这似乎是常见的面试问题之一 但是我看不出为什么我应该同时使用这两个来对employee对象进行排序 我一直在思考实现了无法实现的功能。我明白,如果对象(所比较的实例变量)具有自然顺序,那么是正确的选择。但是,如果需要自定义排序(例如字符串长度),那么可以编写这里我的观点是,只有当客户机希望按照其他条件对数据进行排序时才需
问题内容: 如果我正在从文本中扫描 //我想将行中的下一个char与 // 像这样: 我知道那不存在,但是在这种情况下可以使用任何类似的东西吗? 问题答案: 您的代码将类似于… 请注意,在调用之后,实际上已获取了该值,因此,如果您想进一步使用它,最好保留该变量,例如:
问题内容: 我试图通过将结果对象与原始对象进行比较来验证例程的序列化和反序列化。这些例程可以序列化任意的和深层嵌套的类,因此,我需要一个比较例程,该例程可以提供原始实例和最终实例,并反射性地遍历每种值类型并比较这些值,然后迭代地浸入引用类型以比较值。 我已经尝试过Apache Commons Lang,但这似乎并没有进行很深入的比较,它只是比较引用类型是否相等,而没有深入研究它们: 以下代码说明了