当前位置: 首页 > 知识库问答 >
问题:

如何实现java Mergesort程序的基准测试?

陶涵育
2023-03-14

我想实现一个基准测试方法MergeSort和它的性能来衡量。我已经尝试用随机数填充要合并的数组,但是当代码运行时,数组会打印相同的随机数10次。这是为什么?
PS。我不能发布我编写的整个程序。Stackoverflow说代码太多了。

    public static void main(String[] args)
    {
        int arraySize = 10;
        int[] a = new int[arraySize];
        int k = 1000;
        int m = 1000;
        Random rnd = new Random();

        for (int j = 0; j < k; j++)
        {
            // fill the arraySize array with random numbers 
            for (int i = 0; i < 10*m; i++)
            {
                Arrays.fill(a, rnd.nextInt());
            }
        }

        long startTime = System.nanoTime();
        // array with predefined numbers and size
        //int[] a = { 11, 30, 24, 7, 31, 16, 39, 41 };
        int n = a.length;
        MergeSort m1 = new MergeSort();
        System.out.println("\nBefore sorting array elements are: ");
        m1.printArray(a, n);
        m1.mergeSort(a, 0, n - 1);

        long endTime = System.nanoTime();
        long timeElapsed = endTime - startTime;

        System.out.println("\n\nExecution time in nanoseconds: " + timeElapsed);
        System.out.println("Execution time in milliseconds: " + timeElapsed / 1000000);

        System.out.println("\nAfter sorting array elements are:");
        m1.printArray(a, n);
    }
}

共有1个答案

龙俊英
2023-03-14
for (int i = 0; i < 10*m; i++){
  Arrays.fill(a, rnd.nextInt());
}

这个循环用一个数填充数组10*m次。这就是为什么整个数组都有相同的数字。

解决方案:

int arraySize = 10;
int[] a = new int[arraySize];
for (int i = 0; i < arraySize; i++)
  a[i] = rnd.nextInt(1000);
System.out.println(Arrays.toString(a));
 类似资料:
  • 问题内容: 对于大学,我进行字节码修改,并分析它们对Java程序性能的影响。因此,我需要Java程序(在生产中最好使用的Java程序)和适当的基准测试。例如,我已经有了HyperSQL,并通过基准程序PolePosition来衡量其性能。在没有JIT编译器的JVM上运行的Java程序。谢谢你的帮助! PS:我不能使用程序来对JVM或Java语言本身的性能进行基准测试(例如Wide Finder)。

  • 请阅读此问题的最新编辑。 问题:我需要编写一个正确的基准测试,以将使用不同线程池实现(也来自外部库)使用不同的执行方法的不同工作与使用其他线程池实现的其他工作以及没有任何线程的工作进行比较。 例如,我有24个任务要完成,10000个随机字符串处于基准状态: 和两个状态作为表示工作的内部类(string concat。)和ExecutorService的设置和关闭: 更严格的问题是:如何编写正确的基

  • 我编写了一个非常简单的tornado处理程序,用于测试远程部署的一些设备的上传速度。主要测试将在所说的远程设备上运行(多亏了cURL),我可以得到上传时间的详细报告。 Tornado处理程序真正要做的唯一一件事就是接受一个包含大量字节的实体(差不多就是这样) 所以,上面的代码是有效的,但它有点。。。几乎是可耻的:-D让它更。。。可展示的,我想展示一些更有用的日志,比如请求上传所花的时间或者类似的东

  • 我正在通过在EC2服务器上传输1k大小的消息,对Kafka 0.8.1.1进行基准测试。 我在两个m3上安装了zookeeper。xlarge服务器和具有以下配置: 第二,我在i2.2x大型机器上安装了一台Kafka服务器,该机器具有32Gb RAM和额外的6个SSD驱动器,其中每个磁盘都分区为mnt/a、mnt/b等 。在服务器上,我有一个代理,端口9092上有一个主题,有8个复制因子为1的分区

  • 11.4. 基准测试 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。 下面是IsPalindrome函数的基准测试,其中循

  • GoCPPLua (JIT) 策略执行的负载在model_b_test.go中进行基准测试。 测试是: 英特尔 酷睿 i7-6700HQ CPU @ 2.60GHz, 2601 Mhz, 4 核, 8 处理器 go test -bench= -benchmem 的测试结果如下 (op = 一次 Enforce() 调用, ms = 毫秒, KB = 千字节): 测试用例 规则大小 时间开销 (m