首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印语句与标准输出性能和Dart-Editor与命令行性能

打印语句与标准输出性能和Dart-Editor与命令行性能
EN

Stack Overflow用户
提问于 2013-05-13 18:23:43
回答 1查看 526关注 0票数 1

这可能并不重要,但是我在测试过程中注意到,在Dart-Editor中,print语句和stdout的性能比在命令行中快得多。在命令行中,print的执行时间比从命令行中使用stdout的时间长36%。但是,在编辑器中运行程序时,使用stdout比在编辑器中使用print语句多花大约900%的时间,但两者都比从命令行运行快得多。即。从编辑器中运行的程序打印的时间大约是命令行打印时间的2.65%。

一些基于我的测试的平均性能的相对计时:

代码语言:javascript
复制
Running program from command line (5000 iterations) :
print   1700 milliseconds.
stdout  1245 milliseconds.

Running program within Dart-Editor (5000 iterations) :
print     45 milliseconds
stdout   447 milliseconds.

谁能给我解释一下这些差异的原因--特别是为什么Dart-Editor的性能要快得多?另外,使用stdout是可接受的实践吗?与使用print相比,优缺点是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-13 19:27:41

为什么Dart编辑器更快?

因为命令行的输出处理非常慢,这会阻塞输出流,随后会阻塞对print/stdout的调用。

您可以自己测试-测试以下java程序(当然,使用您自己的路径):

代码语言:javascript
复制
public static void main(String[] args) {
    try {
        // the dart file does print and stdout in a loop
        Process p = Runtime.getRuntime().exec("C:\\eclipse\\dart-sdk\\bin\\dart.exe D:\\DEVELOP\\Dart\\Console_Playground\\bin\\console_playground.dart");
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        StringBuffer buf = new StringBuffer();
        String line;
        while((line = in.readLine()) != null) {
            buf.append(line + "\r\n");
        }
        System.out.print(buf.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在我的机器上,这甚至比Dart Editor (它可能会定期缓冲输入和渲染,但我真的不知道)还要稍微快一点。

您还将看到,将Thread.sleep(1);添加到循环中将严重影响dart程序的性能,因为流被阻塞。

应该使用标准输出吗?

我认为这是非常主观的。我就是其中之一,只要能让我更快地写代码,我就做什么。当我只想转储一个变量时,我使用print(myvar);。但是使用stdout,您可以像这样做一些简单的事情:stdout.addStream(new File(r"D:\test.csv").openRead());。当然,如果性能是一个问题,它取决于如何使用您的应用程序-例如,由另一个程序调用(打印速度更快)还是命令行(由于某种原因,标准输出速度更快)。

为什么标准输出在命令行中更快?

我不知道,抱歉。这是我测试过的唯一一个print()较慢的环境,所以我猜这与控制台处理传入数据的方式有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16519773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档