[ 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