相关疑难解决方法(0)

为什么处理排序数组比处理未排序数组更快?

这是一段看似非常特殊的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);

    // Test
    clock_t start = clock();
    long long sum = 0;

    for (unsigned i = 0; i < 100000; ++i)
    {
        // Primary loop
        for (unsigned c = 0; c < arraySize; ++c) …
Run Code Online (Sandbox Code Playgroud)

c++ java optimization performance branch-prediction

2万
推荐指数
27
解决办法
142万
查看次数

什么是更好的 ?多个if语句,如果有多个条件,则为一个

对于我的工作,我必须开发一个小型Java应用程序来解析非常大的XML文件(~300k行)以选择非常具体的数据(使用Pattern),所以我试图对它进行一些优化.我想知道这两个片段之间哪个更好:

if (boolean_condition && matcher.find(string)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

要么

if (boolean_condition) {
    if (matcher.find(string)) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

更精确:

  • 这些if语句在循环内的每次迭代中执行(~20k次迭代)
  • boolean_conditionboolean使用外部函数在每次迭代时计算的
  • 如果boolean设置为false,我不需要测试匹配的正则表达式

谢谢你的帮助

java optimization if-statement multiple-conditions

39
推荐指数
3
解决办法
7万
查看次数