Java:抛出已检查异常的*能力*会减慢速度吗?

标签 java performance exception

...或者必须抛出异常才能影响性能?

引用已接受的答案here .这是我想要实现的东西,如果以这种方式创建实例不会使事情变得非常慢的话。 (我每秒要创建数千个对象,粒子系统等。所以不,考虑到在 Java 中使用检查异常时存在的性能影响,这不是过早的优化。谢谢。)

最佳答案

您每秒可以创建数千万个对象。除非您在分析器中发现问题,否则我不会担心性能问题。我也会担心首先使代码清晰和正确,然后再考虑对其进行分析。

在您的代码中加入异常几乎没有任何影响(除了让您的代码稍微变大)抛出异常代价高昂,但您每秒可以抛出数千个异常,并且仍然不会严重影响您的应用程序性能。 (有问题的代码也不是什么好事)

public static void main(String... args) {
    long start = System.nanoTime();
    int runs = 10000000;
    for (int i = 0; i < runs; i++) {
        try {
            throwsException();
        } catch (Exception ignored) {
        }
    }
    long time = System.nanoTime() - start;
    System.out.printf("Took an average of %.3f micro-second per exception%n", time / runs / 1e3);
}

private static void throwsException() throws Exception {
    throw new Exception("Ignored");
}

此测试每秒抛出超过一百万个新异常

Took an average of 0.744 micro-second per exception

关于Java:抛出已检查异常的*能力*会减慢速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147530/

相关文章:

java - 如何在java中获取特定Web应用程序的线程信息?

.net - "Writing Faster Managed Code: Know What Things Cost"有更新版本吗?

exception - JFreechart 系列异常

java - 2 个相等的字符串返回 false

java - 这个简单的类是否需要定制的 JSF 转换器?

java - 使用数据库创建 jcomponents

performance - 提高 perl 代码的性能

c - 快速整数到十进制转换

java - 在特定 INPUT 值后获取 ArrayIndexOutOfBoundsException

c++ - 为什么 C++ std::exception::what 成员常量?