Java 我如何知道我的代码在执行时间方面是否有效?

Java 我如何知道我的代码在执行时间方面是否有效?,java,performance,Java,Performance,只是一个一般的性能问题。对于一个程序来说,1-7秒是一个很好的构建时间吗?该程序可以构建一个扑克牌,对一个扑克牌进行排序,分析并返回每个扑克牌类型,如直牌、刷新等 我生成一个手,直到它返回一个手类型,在这个过程中,我将它从最低到最高排序。我为每一种扑克手类型都这么做。因此,你可以想象,要产生皇家同花顺和直冲,它必须在击球前产生数千只手 我如何知道进行分析所需的时间是合理的。。。扑克没有太多的选择,没有理由让这样的分析器在一秒钟内,更不用说7秒。大约7年前,我为Brew(C)手机编写了一个Hold

只是一个一般的性能问题。对于一个程序来说,1-7秒是一个很好的构建时间吗?该程序可以构建一个扑克牌,对一个扑克牌进行排序,分析并返回每个扑克牌类型,如直牌、刷新等

我生成一个手,直到它返回一个手类型,在这个过程中,我将它从最低到最高排序。我为每一种扑克手类型都这么做。因此,你可以想象,要产生皇家同花顺和直冲,它必须在击球前产生数千只手


我如何知道进行分析所需的时间是合理的。。。扑克没有太多的选择,没有理由让这样的分析器在一秒钟内,更不用说7秒。大约7年前,我为Brew(C)手机编写了一个Hold'em游戏。它会立即(几乎)产生手。如果您使用java,那么您可能正在一台相当现代化(读起来非常快)的机器上运行,无论它是一台现代手机还是一台服务器,生成和评估扑克手都不是一个耗时的企业

没有。。。扑克没有太多的选择,没有理由让这样的分析器在一秒钟内,更不用说7秒。大约7年前,我为Brew(C)手机编写了一个Hold'em游戏。它会立即(几乎)产生手。如果您使用java,那么您可能正在一台相当现代化(读起来非常快)的机器上运行,无论它是一台现代手机还是一台服务器,生成和评估扑克手都不是一个耗时的企业

我觉得这太长了。除非你有一个复杂的GUI。。。我建议向您提出与性能相关的问题。给他们一个好的,或者至少一个或两个你关注的方法,你很可能会得到一个好的回应


也可以考虑基准测试。这是一个好消息。这是一个非常好的基准测试框架,我建议您也研究一下(我在CodeReview;D上了解到了它)

我认为这太长了。除非你有一个复杂的GUI。。。我建议向您提出与性能相关的问题。给他们一个好的,或者至少一个或两个你关注的方法,你很可能会得到一个好的回应


也可以考虑基准测试。这是一个好消息。这是一个非常好的基准测试框架,我建议您也研究一下(我在CodeReview;D上了解到了这一点)

这是一个非常难回答的问题,没有任何特定的代码。我想说这太长了…不看代码是不可能说的。这在很大程度上取决于语言、硬件和实现。我运行了大约25次,平均约3秒,不好吗?如果您的玩家愿意等待3秒,就可以了。。。然而,正如我在下面所说的,这个过程没有理由是其他任何瞬间的。“构建时间”:编译器构建程序的时间,或者程序构建和评估扑克手的时间——我称之为“执行时间”——这是一个非常难回答的问题,没有任何特定的代码。我想说这太长了…不看代码是不可能说的。这在很大程度上取决于语言、硬件和实现。我运行了大约25次,平均约3秒,不好吗?如果您的玩家愿意等待3秒,就可以了。。。然而,正如我在下面所说的,这个过程没有理由是其他任何瞬间的。“构建时间”:编译器构建程序的时间,或者程序构建和评估扑克手的时间——我称之为“执行时间”——我更愿意发送一个包含所有文件的zip文件。我有很多类,所以不可能在这里展示。我不打算回顾你的代码,但这里显而易见的解决方案是:从52张牌组中抽牌(假设你的牌组只是一个牌阵列,这将是闪电般的快)。试着找到最好的手(从最好到最差的顺序),因为如果他们有同花顺,找一个直的没有意义。再次强调,每只手的计算速度都会非常快,而且只有9只手,所以如果你的程序占用了任何可感知的时间,那么你就犯了严重的错误。问题是,我正在生成一只手,直到它返回一个手类型,在这个过程中,我将它从最低到最高排序。我为每一种扑克手类型都这么做。所以你可以想象一下,要产生皇家同花顺和直冲,它必须在击球前产生数千只手。。。我无法想象你为什么要这样做。如果你需要一条直线,你可以随机拉一张牌,然后绕着它拉4张牌(随机方向)。如果你想要一种类型的3张牌,拉一张随机套装中的随机牌,然后拉两张剩余的该等级的套装牌。。。等。你可以立即生成任意随机手。。。所以如果你想要一只特定种类的随机手,你可以得到手(rand*9)。这将生成某种类型的随机手,同样,它会立即发生。我更愿意发送一个包含所有文件的zip文件。我有很多类,所以不可能在这里展示。我不打算回顾你的代码,但这里显而易见的解决方案是:从52张牌组中抽牌(假设你的牌组只是一个牌阵列,这将是闪电般的快)。试着找到最好的手(从最好到最差的顺序),因为如果他们有同花顺,找一个直的没有意义。再次强调,每只手的计算速度都会非常快,而且只有9只手,所以如果你的程序占用了任何可感知的时间,那么你就犯了严重的错误。问题是,我正在生成一只手,直到它返回一个手类型,在这个过程中,我将它从最低到最高排序。我为每一种扑克手类型都这么做。所以你可以想象一下,要产生皇家同花顺和直冲,它必须在击球前产生数千只手。。。我无法想象为什么