[
https://issues.apache.org/jira/browse/THRIFT-1815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13541961#comment-13541961
]
Andrew Gaul commented on THRIFT-1815:
-------------------------------------
1) I compile 3,500 lines across 11 .thrift files, resulting in 120,000 lines of
.java source. Compiling on eCryptfs, I measure 3.480s before my patch and
0.389s after. I see more dramatic results when compiling on a proprietary
FUSE-based network filesystem, on the order of minutes.
2) If someone introduces a spurious "using namespace std" they will encounter a
compilation error due to a duplicated endl symbol.
Other approaches include sed -i 's/endl/"\\n"/g' compiler/cpp/src/generate/* or
implementing an ofstream variant which handles std::endl differently.
> Code generators line buffer output
> ----------------------------------
>
> Key: THRIFT-1815
> URL: https://issues.apache.org/jira/browse/THRIFT-1815
> Project: Thrift
> Issue Type: Improvement
> Components: Compiler (General)
> Affects Versions: 0.9
> Reporter: Andrew Gaul
> Labels: performance
> Attachments: thrift_std_endl.patch
>
>
> This results in slow performance on FUSE- and network-based filesystems,
> e.g., eCryptfs. std::ostream << std::endl emits a newline and flushes
> buffers to the kernel[1], yielding excessive system calls. Instead, emit
> "\n" which does the equivalent without the flush[2]. The attached patch
> accomplishes this while minimizing code churn by removing "using namespace
> std" and introducing a static variable endl.
> [1] http://www.cplusplus.com/reference/ios/endl/
> [2]
> http://stackoverflow.com/questions/5492380/what-is-the-c-iostream-endl-fiasco
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira