System.out.print导致延迟?

Kaelinator

我有一个简单的程序,是从Java编程书中获得的,只是在其中添加了一些内容。

package personal;

public class SpeedTest {
  public static void main(String[] args) {
    double DELAY = 5000;
    long startTime = System.currentTimeMillis();
    long endTime = (long)(startTime + DELAY);
    long index = 0;

    while (true) {
      double x = Math.sqrt(index);
      long now = System.currentTimeMillis();
      if (now >= endTime) {
        break;
      }
      index++;
    }
    System.out.println(index + " loops in " + (DELAY / 1000) + " seconds.");
  }
}

这返回 128478180 loops in 5.0 seconds.

如果我System.out.println(x);在if语句之前添加,那么我在5秒钟内的循环次数将下降到40万次,这是由于延迟造成的System.out.println()吗?还是只是x在我不打印出来时才被计算出来?

迈克·罗宾逊

无论何时以任何编程语言在非常繁忙的循环中“执行输出” ,都会引入两个可能非常重要的延迟:

  1. 数据必须转换为可打印的字符,然后将其写入可能将要显示的任何显示器/设备上。
  2. “输出任何东西的行为使进程必须与可能也正在生成输出的任何其他进程进行同步。

通常用于此目的的一种替代策略是“跟踪表”。这是一个固定大小的内存数组,其中包含字符串。条目以“循环”方式添加到此表中:最旧的条目不断被最新的条目替换。此策略无需提供输出即可提供历史记录(剩下的唯一要求是,向表添加条目或从中读取条目的任何人都必须同步其活动,例如使用互斥锁。)

希望显示跟踪表内容的进程应获取互斥锁,对感兴趣的内容进行内存复制,然后在准备输出之前释放互斥锁。这样,与跟踪表有关的条目的各种处理都不会被与I / O相关的延迟源所延迟。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

由于system.out.println语句导致运行线程延迟

来自分类Dev

首选的System.out.print()或System.out.printf()?

来自分类Dev

嵌套的“ System.out.print”输出

来自分类Dev

是System.out.print中和FXML报表如何使用“%”符号

来自分类Dev

测试程序中的调试语句的Logger或System.out.print

来自分类Dev

我如何在System.out.print中收集int

来自分类Dev

查找System.out.print的正则表达式

来自分类Dev

java System.out.print格式样式

来自分类Dev

System.out.print 不显示客户数据

来自分类Dev

Java多线程应用程序System.out.println产生延迟

来自分类Dev

为什么使用Scanner.next()导致这种奇怪的System.out.println()行为?

来自分类Dev

Java:main()中的System.out.print错误| out必须是抽象类中的一个对象(不是)

来自分类Dev

System.out.print()在测试方法中未显示任何内容

来自分类Dev

如何将System.out.print中的多个值整齐地排列到列中?

来自分类Dev

我的Java System.out.print似乎有点重叠

来自分类Dev

System.out.print同时打印两个行/问题。我究竟做错了什么?

来自分类Dev

在Eclipse控制台中包含与System.out.print语句相对应的文件名/行号

来自分类Dev

从Junit运行时,System.out.print不会输出到控制台

来自分类Dev

如何将System.out.print从函数显示到JOptionPane.showMessageDialog?

来自分类Dev

System.out.print(“”); 令牌“。”的语法错误,此令牌后应@

来自分类Dev

System.print.out(如果一个整数是另一个整数的倍数)

来自分类Dev

如何在void方法中返回System.out.print(0)?

来自分类Dev

确定对象是否是System.out.print / println方法的参数

来自分类Dev

我如何删除System.out.print并获得唯一的收益

来自分类Dev

如何使用循环和 system.out.print/println 绘制图形

来自分类Dev

System.out.print() 中打印的常量的默认数据类型;

来自分类Dev

有没有办法得到 System.out.print(); 来自 For 循环的值;

来自分类Dev

如何在递归循环中减去 System.out.print 的单个迭代?

来自分类Dev

无法从“out System.DateTime”转换?'out System.DateTime

Related 相关文章

  1. 1

    由于system.out.println语句导致运行线程延迟

  2. 2

    首选的System.out.print()或System.out.printf()?

  3. 3

    嵌套的“ System.out.print”输出

  4. 4

    是System.out.print中和FXML报表如何使用“%”符号

  5. 5

    测试程序中的调试语句的Logger或System.out.print

  6. 6

    我如何在System.out.print中收集int

  7. 7

    查找System.out.print的正则表达式

  8. 8

    java System.out.print格式样式

  9. 9

    System.out.print 不显示客户数据

  10. 10

    Java多线程应用程序System.out.println产生延迟

  11. 11

    为什么使用Scanner.next()导致这种奇怪的System.out.println()行为?

  12. 12

    Java:main()中的System.out.print错误| out必须是抽象类中的一个对象(不是)

  13. 13

    System.out.print()在测试方法中未显示任何内容

  14. 14

    如何将System.out.print中的多个值整齐地排列到列中?

  15. 15

    我的Java System.out.print似乎有点重叠

  16. 16

    System.out.print同时打印两个行/问题。我究竟做错了什么?

  17. 17

    在Eclipse控制台中包含与System.out.print语句相对应的文件名/行号

  18. 18

    从Junit运行时,System.out.print不会输出到控制台

  19. 19

    如何将System.out.print从函数显示到JOptionPane.showMessageDialog?

  20. 20

    System.out.print(“”); 令牌“。”的语法错误,此令牌后应@

  21. 21

    System.print.out(如果一个整数是另一个整数的倍数)

  22. 22

    如何在void方法中返回System.out.print(0)?

  23. 23

    确定对象是否是System.out.print / println方法的参数

  24. 24

    我如何删除System.out.print并获得唯一的收益

  25. 25

    如何使用循环和 system.out.print/println 绘制图形

  26. 26

    System.out.print() 中打印的常量的默认数据类型;

  27. 27

    有没有办法得到 System.out.print(); 来自 For 循环的值;

  28. 28

    如何在递归循环中减去 System.out.print 的单个迭代?

  29. 29

    无法从“out System.DateTime”转换?'out System.DateTime

热门标签

归档