Questions tagged «performance»

对于与代码的度量或改进以及应用程序效率有关的问题。

26
为什么处理排序数组比处理未排序数组快?
Наэтотвопросестьответына 堆栈溢出нарусском:Почемуотсортированныймассивобрабатываетсябыстрее,чемнеотсортированный? 这是一段C ++代码,显示了一些非常特殊的行为。出于某些奇怪的原因,奇迹般地对数据进行排序使代码快了将近六倍: #include <algorithm> #include <ctime> #include <iostream> int main() { // Generate data const unsigned arraySize = 32768; int data[arraySize]; for (unsigned c = 0; c < arraySize; ++c) data[c] = std::rand() % 256; // !!! With this, the next loop runs faster. std::sort(data, data + arraySize); …

30
我应该为JavaScript链接使用哪个“ href”值,“#”或“ javascript:void(0)”?
以下是构建链接的两种方法,其唯一目的是运行JavaScript代码。在功能,页面加载速度,验证目的等方面哪个更好? function myJsFunc() { alert("myJsFunc"); } <a href="#" onclick="myJsFunc();">Run JavaScript Code</a> 运行代码段隐藏结果展开摘要 要么 function myJsFunc() { alert("myJsFunc"); } <a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a> 运行代码段隐藏结果展开摘要

30
为什么Android模拟器这么慢?我们如何加快Android模拟器的速度?[关闭]
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我 在x86 Windows XP Professional计算机上安装了2.67 GHz赛扬处理器和1.21 GB RAM 。 我的理解是,Android Emulator应该在这样的机器上相当迅速地启动,但对我而言,并不是这样。我已经按照所有说明设置了IDE,SDK,JDK等,并且在快速启动模拟器方面取得了一些成功,但这很少见。如果可能的话,我该如何解决? 即使启动并加载主屏幕,它也非常缓慢。我曾尝试的Eclipse IDE的3.5版本(伽利略)和3.4(木卫三)。


10
提高SQLite每秒INSERT的性能
优化SQLite是棘手的。C应用程序的大容量插入性能可以从每秒85次插入到每秒96,000次以上插入! 背景:我们正在将SQLite用作桌面应用程序的一部分。我们将大量配置数据存储在XML文件中,这些文件将被解析并加载到SQLite数据库中,以便在初始化应用程序时进行进一步处理。SQLite是这种情况的理想选择,因为它速度快,不需要专门的配置,并且数据库作为单个文件存储在磁盘上。 基本原理: 最初,我对看到的性能感到失望。事实证明,取决于数据库的配置方式和使用API​​的方式,SQLite的性能可能会发生很大的变化(对于批量插入和选择)。弄清楚所有选项和技术是什么都不是一件容易的事,因此,我认为创建此社区Wiki条目与Stack Overflow阅读器共享结果以节省其他人的麻烦是审慎的做法。 实验:我认为,最好是编写一些C代码并实际衡量各种选择的影响,而不是简单地谈论一般意义上的性能提示(即“使用事务!”)。我们将从一些简单的数据开始: 28 MB TAB分隔的文本文件(约865,000条记录),用于多伦多市的完整运输时间表 我的测试计算机是运行Windows XP的3.60 GHz P4。 使用Visual C ++ 2005 将代码编译为“发布”,“完全优化”(/ Ox)和“最爱快速代码”(/ Ot)。 我正在使用直接编译到测试应用程序中的SQLite“合并”。我刚好拥有的SQLite版本(3.6.7)有点旧,但是我怀疑这些结果将与最新版本相当(如果您另有意见,请发表评论)。 让我们写一些代码! 代码:一个简单的C程序,它逐行读取文本文件,将字符串拆分为值,然后将数据插入SQLite数据库。在此“基准”版本的代码中,创建了数据库,但实际上不会插入数据: /************************************************************* Baseline code to experiment with SQLite performance. Input data is a 28 MB TAB-delimited text file of the complete Toronto Transit System schedule/route info from http://www.toronto.ca/open/datasets/ttc-routes/ …

3
为什么打印“ B”比打印“#”要慢得多?
我生成了1000x的两个矩阵1000: 第一矩阵:O和#。 第二矩阵:O和B。 使用以下代码,第一个矩阵花费了8.52秒完成: Random r = new Random(); for (int i = 0; i < 1000; i++) { for (int j = 0; j < 1000; j++) { if(r.nextInt(4) == 0) { System.out.print("O"); } else { System.out.print("#"); } } System.out.println(""); } 使用此代码,第二个矩阵花费了259.152秒来完成: Random r = new Random(); for (int …

8
数据库索引如何工作?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 鉴于索引随着数据集的增加而变得非常重要,有人可以解释索引在数据库不可知的级别是如何工作的吗? 有关查询索引字段的信息,请查看如何索引数据库列。

10
为什么单独循环中的元素加法比组合循环中的要快得多?
假设a1,b1,c1,并d1指向堆内存和我的数字代码具有下列核心循环。 const int n = 100000; for (int j = 0; j < n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } 该循环通过另一个外部for循环执行了10,000次。为了加快速度,我将代码更改为: for (int j = 0; j < n; j++) { a1[j] += b1[j]; } for (int j = 0; j < n; j++) { c1[j] += …

10
为什么在Python 3中“范围(1000000000000000(1000000000000001))”这么快?
据我了解,该range()函数实际上是Python 3中的一种对象类型,它会像生成器一样动态生成其内容。 在这种情况下,我本以为下一行会花费过多的时间,因为要确定1个四舍五入是否在该范围内,必须生成一个四舍五入值: 1000000000000000 in range(1000000000000001) 此外:似乎无论我添加多少个零,计算多少都花费相同的时间(基本上是瞬时的)。 我也尝试过这样的事情,但是计算仍然是即时的: 1000000000000000000000 in range(0,1000000000000000000001,10) # count by tens 如果我尝试实现自己的范围函数,结果将不是很好! def my_crappy_range(N): i = 0 while i < N: yield i i += 1 return 使range()物体如此之快的物体在做什么? 选择Martijn Pieters的答案是因为它的完整性,但也看到了abarnert的第一个答案,它很好地讨论了在Python 3中range成为完整序列的含义,以及一些有关__contains__跨Python实现的函数优化潜在不一致的信息/警告。。abarnert的其他答案更加详细,并为那些对Python 3优化背后的历史(以及xrangePython 2中缺乏优化)感兴趣的人提供了链接。poke和wim的答案为感兴趣的人提供了相关的C源代码和说明。




10
将32位循环计数器替换为64位会在Intel CPU上使用_mm_popcnt_u64引起疯狂的性能偏差
我一直在寻找处理popcount大量数据的最快方法。我遇到了一个非常奇怪的效果:将loop变量从更改为unsigned,uint64_t使PC上的性能下降了50%。 基准测试 #include <iostream> #include <chrono> #include <x86intrin.h> int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { cerr << "usage: array_size in MB" << endl; return -1; } uint64_t size = atol(argv[1])<<20; uint64_t* buffer = new uint64_t[size/8]; char* charbuffer = reinterpret_cast<char*>(buffer); for (unsigned i=0; i<size; …

16
字符串格式:%与.format
Python 2.6引入的str.format()方法与现有%运算符的语法略有不同。哪个更好,什么情况下适合? 以下使用每种方法并具有相同的结果,那么有什么区别? #!/usr/bin/python sub1 = "python string!" sub2 = "an arg" a = "i am a %s" % sub1 b = "i am a {0}".format(sub1) c = "with %(kwarg)s!" % {'kwarg':sub2} d = "with {kwarg}!".format(kwarg=sub2) print a # "i am a python string!" print b # "i am a …

29
如何配置Python脚本?
欧拉计画和其他编码竞赛经常有最长的运行时间,或者人们吹嘘他们的特定解决方案的运行速度。使用Python时,有时这些方法有些繁琐-即向中添加计时代码__main__。 剖析Python程序需要花费多长时间的好方法是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.