Java语言,程序每次运行都记录运行的时间,并且输出所有次程序运行时间的标准差和平均值,这个代码怎么和主程序的代码合并

Java语言,程序每次运行都记录运行的时间,并且输出所有次程序运行时间的标准差和平均值,这个代码怎么和主程序的代码合并?合并怎么计算时间的呢

不想写代码。给你一个思路,主程序开始之前记录开始时间,主程序结束之后记录结束时间,计算程序运行时间,并将其保存到一个数组中。

在 Java 中,你可以使用 System.currentTimeMillis()System.nanoTime() 来获取程序的运行时间。结合主程序的代码,你可以在程序的适当位置记录运行时间,并将每次运行的时间保存到一个列表中。最后,你可以计算平均值和标准差。

以下是一个示例代码,演示了如何将计算程序运行时间的功能与主程序代码合并:

import java.util.ArrayList;
import java.util.List;

public class MainProgram {
    public static void main(String[] args) {
        List<Long> runTimes = new ArrayList<>();

        // 主程序代码
        for (int i = 0; i < 10; i++) {
            long startTime = System.currentTimeMillis();

            // 主程序逻辑
            // ...

            long endTime = System.currentTimeMillis();
            long runTime = endTime - startTime;
            runTimes.add(runTime);

            System.out.println("第 " + (i+1) + " 次运行时间:" + runTime + " 毫秒");
        }

        // 计算平均值
        long sum = 0;
        for (long time : runTimes) {
            sum += time;
        }
        double average = (double) sum / runTimes.size();
        System.out.println("平均运行时间:" + average + " 毫秒");

        // 计算标准差
        double variance = 0;
        for (long time : runTimes) {
            variance += Math.pow(time - average, 2);
        }
        double standardDeviation = Math.sqrt(variance / runTimes.size());
        System.out.println("标准差:" + standardDeviation);
    }
}

在这个示例代码中,我们使用 System.currentTimeMillis() 获取当前时间戳,并在主程序代码的适当位置记录开始时间和结束时间。然后,我们计算每次运行的时间差,并将它们保存到 runTimes 列表中。

最后,我们计算 runTimes 列表的平均值和标准差。平均值是所有运行时间的总和除以次数,标准差是每个运行时间与平均值之差的平方和的平均值的平方根。

希望这个示例代码对你有所帮助,并能帮助你将计算程序运行时间的功能与主程序的代码合并。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7497767
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【Java】输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分
  • 你还可以看下java参考手册中的 java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-泛型是Java编程语言的一个强大功能。它们提高了代码的类型安全性,使更多的错误可以在编译时发现。-通用方法
  • 除此之外, 这篇博客: Java 将参数传递给方法,参数是否会被改变?中的 Java 中方法的传参没有所谓的值传递和引用传递,值传递和引用传递已经是历史,Java中只有值传递,参数传递的是参数的拷贝,这个拷贝在基本数据类型就是数值,对象类型就是引用! 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    值类型:基本数据类型
    引用类型:除基本数据类型之外的类型
    1.值传递:适用于基本数据类型和不可变类(String,基本类型包装类型是引用类型,但是遵循值传递规则),传递的是数据的拷贝,被调用对象对新数据的改变不影响原数据的取值

    2.引用数据类型:传递的是引用地址的拷贝,被调用对象对新数据的改变影响原数据的取值,因为新数据和原数据的引用虽然不同但却指向堆中的同一数据对象。

    package com.wugeek.test;
    /**
    * @author 作者 :peanut.w
    * @version 创建时间:2017年12月9日 下午4:13:17
    * 类说明
    */
    public class TestPass {
    	int a=123;//基本数据类型int
    	String b="123";//特殊的类string
    	StringBuffer c=new StringBuffer("123");//引用数据类型
    	public void method(){
    		this.changeInt(a);
    		System.out.println(a);
    		this.changeString(b);
    		System.out.println(b);
    		this.changeStringBuffer(c);
    		System.out.println(c);
    		
    	}
    	public void changeInt(int x){
    		x=1234;
    	}
    	public void changeString(String y){
    		y="1235";
    		
    	}
    	public void changeStringBuffer(StringBuffer stringBuffer){
    		stringBuffer.append(456);
    		
    	}
    	public static void main(String [] args){
    		TestPass test =new TestPass();
    		test.method();
    	}
    	//输出结果:123   123   123456
    
    }
    
    
  • 您还可以看一下 汪翠老师的java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码课程中的 接收从服务器端群发回来的消息并添加地主牌小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    为了在Java程序中记录运行时间并输出标准差和平均值,你可以按照以下步骤进行操作:

    步骤1:在程序的关键位置(例如开始和结束部分)使用System.currentTimeMillis()获取当前时间的毫秒数。

    long startTime = System.currentTimeMillis();
    
    // 你的程序代码
    
    long endTime = System.currentTimeMillis();
    

    步骤2:计算运行时间(单位:毫秒)。

    long runningTime = endTime - startTime;
    

    步骤3:将运行时间存储到一个集合中。你可以使用一个List或者一个数组来存储每次运行的时间。

    List<Long> runningTimes = new ArrayList<>();
    
    runningTimes.add(runningTime);
    

    步骤4:重复运行程序多次,并将每次运行的时间添加到集合中。

    for (int i = 0; i < numberOfRuns; i++) {
        // 运行你的程序
    
        long startTime = System.currentTimeMillis();
    
        // 你的程序代码
    
        long endTime = System.currentTimeMillis();
        long runningTime = endTime - startTime;
    
        runningTimes.add(runningTime);
    }
    

    步骤5:计算运行时间的平均值。

    long totalRunningTime = 0;
    
    for (long time : runningTimes) {
        totalRunningTime += time;
    }
    
    double averageRunningTime = (double) totalRunningTime / runningTimes.size();
    

    步骤6:计算运行时间的标准差。

    double sumOfSquaredDifferences = 0;
    
    for (long time : runningTimes) {
        double difference = time - averageRunningTime;
        sumOfSquaredDifferences += difference * difference;
    }
    
    double standardDeviation = Math.sqrt(sumOfSquaredDifferences / runningTimes.size());
    

    步骤7:输出平均值和标准差。

    System.out.println("平均值:" + averageRunningTime);
    System.out.println("标准差:" + standardDeviation);
    

    以上是用于记录运行时间、计算平均值和标准差的代码。如果你想要将这段代码与主程序合并,你只需要将步骤1到步骤7中的代码添加到你的主程序中的合适位置即可。

    然而,这种方法只适用于单线程程序。如果你的程序是多线程的,你需要采取额外的措施来确保准确记录和计算运行时间。可以使用System.nanoTime()来获取更准确的时间戳。

    另外,需要注意的是,平均值和标准差的计算只在多次运行后才有意义。如果你只运行一次程序,你将得到的平均值和标准差都是0。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^