相关疑难解决方法(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万
查看次数

除非使用System.out.println,否则看似无限循环终止

我有一个简单的代码,应该是一个无限循环,因为x它将一直在增长,并将永远保持大于j.

int x = 5;
int y = 9;
for (int j = 0; j < x; j++) {
   x = x + y;
}
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

但就像它一样,它打印y并且不会无休止地循环.我无法弄清楚为什么.但是,当我按以下方式调整代码时:

int x = 5;
int y = 9;
for (int j = 0; j < x; j++) {
    x = x + y;
    System.out.println(y);
}
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

它变成了无限循环,我不明白为什么.java是否认识到它是无限循环并在第一种情况下跳过它但是必须在第二种情况下执行方法调用,以便它按预期运行?困惑:)

java for-loop infinite-loop

88
推荐指数
3
解决办法
7229
查看次数

Scala中println的替代方案

我需要在控制台上打印大量数据(大约100 MB).使用println在IntelliJ上惨遭失败.是否有像console.log这样的替代方案可以处理和显示这些数据而不会滞后和减速?

提前致谢!

scala println

6
推荐指数
1
解决办法
577
查看次数

系统输出println

我在控制台上打印了2行.它们都打印,但是当第二个打印时,第一个打印到第二个,所以2行是相同的.我以前从未遇到过这个.为什么第二次打印会覆盖第一次打印,我该如何解决?

public static void main(String args[]){
    new MergeSort(90000);

    System.out.println("Array to be mergesorted: " +Arrays.toString(array));

    long start = System.currentTimeMillis();

    mergeSort(array, 1, array.length);

    long end = System.currentTimeMillis();

    System.out.println("Result: " + Arrays.toString(array) );
}
Run Code Online (Sandbox Code Playgroud)

构造函数:

public MergeSort(int n){
    Random rand = new Random();
    array = new int[n];
    for(int i = 0; i <array.length; i++){
        array[i] = rand.nextInt(101);
    }
}
Run Code Online (Sandbox Code Playgroud)

其余代码:

public static void merge(int[] A, int p, int q, int r){
    //
    //length of subarray 1
    int n1 = q-p+1;

    //length of subarray …
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
1309
查看次数

通过 Cygwin 运行 Windows .EXE 本质上比通过 BAT 慢吗?

我们正在通过 Cygwin 脚本运行 Windows .EXE 文件,并且遇到性能问题。我看过有关 Cygwin 性能问题的各种帖子,包括这篇文章,其中一篇答案深入研究了 Cygwin 的内部结构,让我认为可能存在问题。然而,这些帖子似乎更多地涉及启动时间、选项卡完成等。在我们开始基准测试之前,我希望问:是否有任何内在原因导致 Windows .EXE 如果从以下位置启动,运行速度会变慢: Cygwin 与 BAT?

windows performance cygwin batch-file

5
推荐指数
1
解决办法
697
查看次数

为什么#map 比#each 更高效?

当你只有一把锤子时,一切看起来都像钉子。在发现and和其他可迭代方法Array#each的实用性、优雅性和语法乐趣之前,可以这样说Ruby 中的方法。我好奇的是:Array#mapArray#select

为什么使用更精确的可迭代方法时性能会实际提高?总体来说这是真的吗?

例如,在

require 'benchmark'

array = (1..100000).to_a

puts Benchmark.measure {
  100.times do
    array.map { |el| el.even? }
  end
}

puts Benchmark.measure {
  100.times do
    new_array = []
    array.each do |el| 
      new_array << el.even? 
    end
  end
}

# ruby bench.rb
# 0.450598   0.015524   0.466122 (  0.466802)
# 0.496796   0.018525   0.515321 (  0.516196)
Run Code Online (Sandbox Code Playgroud)

Benchmark总是表现出有利于 的时间性能差异Array#map。在下面的代码中:

puts Benchmark.measure {
  100.times do
    array.select { |el| el.even? }
  end
}

puts Benchmark.measure {
  100.times do
    new_array …
Run Code Online (Sandbox Code Playgroud)

ruby performance

2
推荐指数
1
解决办法
1238
查看次数