引用“ Python编程:计算机科学概论”
我们可以使用乘幂**求平方根。使用math.sqrt效率更高。
“多少”,但是到什么程度,如何?
从理论上讲,hammar的答案和duffymo的答案是很好的猜测。但在实践中,我的机器上,这是 不是 更有效:
>>> import timeit
>>> timeit.timeit(stmt='[n ** 0.5 for n in range(100)]', setup='import math', number=10000)
0.15518403053283691
>>> timeit.timeit(stmt='[math.sqrt(n) for n in range(100)]', setup='import math', number=10000)
0.17707490921020508
问题的一部分是.
操作。如果sqrt
直接导入到名称空间中,则可以得到一些改进。
>>> timeit.timeit(stmt='[sqrt(n) for n in range(100)]', setup='from math import sqrt', number=10000)
0.15312695503234863
那里的关键字: 轻微 。
进一步的测试表明,随着数量的增加,您从使用中获得的收益sqrt
也会增加。但是仍然不是很多!
>>> timeit.timeit(stmt='[n ** 0.5 for n in range(1000000)]', setup='import math', number=1)
0.18888211250305176
>>> timeit.timeit(stmt='[math.sqrt(n) for n in range(1000000)]', setup='import math', number=1)
0.18425297737121582
>>> timeit.timeit(stmt='[sqrt(n) for n in range(1000000)]', setup='from math import sqrt', number=1)
0.1571958065032959
我在查看我的代码,希望提高它的性能,然后我看到了这个: 坐在后面,洋洋得意地看着代码运行,执行了大约10%!比它以前的版本更糟。这让我大吃一惊。有什么想法吗? flow Javadocs:“返回最大(最接近正无穷大)的双倍值,该值小于或等于参数,并且等于数学整数。” 编辑在我的情况下n是一个长。cast-flood-sqrt是否会产生与cast-sqrt不同的int?我个人不明白为什么会...所有
问题内容: 我突然在我的java-app(使用NetBeans作为IDE)中创建记录器时,突然看到一条警告:“记录器中字符串连接使用效率不高”。 我的原始代码是 但是NetBeans建议将此代码转换为模板(“模板”在这里意味着什么?),并提供以下代码: 这两种串联方式有什么不同,尽管我从未使用过后者。 干杯。 问题答案: 我会忽略该警告(如果可能,请将其关闭)。串联的效率不是那么低,因为现代编译器
问题内容: 使用这些JPA属性 Ehcache对于同一查询效率不高, 问题与QueryCache类的namedParameters.hashCode()函数有关,它为同一查询生成了不同的HashCode! 与班级有关 它将为同一Array对象[01,1]生成一个不同的(新)hachCode! 对于数组,此hashCode方法应该是递归的 问题答案: 递归版本完全正常 类org.hibernate.
今天我决定测试一下,结果我惊讶地发现(至少在C#正则表达式引擎中)似乎比其他两个没有太大区别的代码效率要低。下面是我测试输出的10000个由1000个随机字符组成的字符串,其中5077个实际包含一个数字: 这对我来说是一个惊喜,有两个原因,如果有人能给我一些启示,我会很感兴趣: 我本以为范围的实现会比集合的实现效率高得多。 我不能理解为什么比差。除了的简写之外,还有其他内容吗? 下面是测试代码:
使用thoses和JPA属性 Ehcache对于相同的查询不是有效的, 问题与QueryCache类的函数namedParameters.hashCode()有关,它为同一个查询生成不同的HashCode! 这与类有关 它为同一个数组对象[01,1]生成一个不同的(新的)hachCode! 此hashCode方法对于数组应该是递归的
问题内容: 我目前遇到一些问题,以了解为什么在某些情况下Java中的并行化似乎效率低下。在下面的代码中,我构建了4个使用ThreadPool执行的相同任务。 在我的Core i5(2核,4线程)上,如果将工作程序数设置为1,则计算机需要大约5700毫秒,并使用25%的处理器。如果将工作程序数量设置为4,则可以观察到100%的CPU使用率,但是…计算时间是相同的:5700ms,而我希望它可以减少4倍
不可变对象是无法更改状态的对象。它们更容易测试和调试,在并发编程中非常有用。然而,与可变集合的亲属相比,当前的不可变集合实现的性能较差。例如,将关联数组实现为不可变的红黑树时,平均有O(log(n))个Insert/Delete,而哈希表平均有O(1)个Insert/Delete。 总的来说,不可变集合是否比它们的可变表亲效率低,或者有一天我们会找到同样快的不可变实现?
此方法返回数字的平方根。 如果数字的值为负,则sqrt返回NaN。 语法 (Syntax) Math.sqrt ( x ); 参数 (Parameter) x - 代表一个数字 返回值 (Return Value) 返回数字的平方根。 例子 (Example) console.log("---Math.sqrt()---") console.log("Math.sqrt(16) : "+M