summaryrefslogtreecommitdiffstats
path: root/compiler-rt/SDKs/linux/usr/include/stdlib.h
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-05-23 07:18:59 +0000
committerBill Wendling <isanbard@gmail.com>2013-05-23 07:18:59 +0000
commit353fbd35165360a47b310e2bbc4c15acc8d0c7e6 (patch)
tree1e57d172aaf7771f09896217196449635fff0402 /compiler-rt/SDKs/linux/usr/include/stdlib.h
parenta76dd19507023d10f70b99809d2ce61a1a96d62e (diff)
downloadbcm5719-llvm-353fbd35165360a47b310e2bbc4c15acc8d0c7e6.tar.gz
bcm5719-llvm-353fbd35165360a47b310e2bbc4c15acc8d0c7e6.zip
Performance improvement.
Using fwrite and fread was very *very* slow. The resulting code was multiple times slower than GCC's implementation of gcov. Replace the fwrite/fread system with an mmap() version. If the `.gcda' file doesn't exist, we (re)allocate a buffer that we write into. That gets written to the `.gcda' file in one chunk. If the `.gcda' file already exists, we simply mmap() the file, modify the mapped data, and use msync() to write the contents out to disk. It's much easier than implementing our own buffering scheme, and we don't have to use fwrite's and fread's buffering. For those who are numbers-oriented, here are some timings: GCC Verison ----------- `.gcda' files don't exist: 23s `.gcda' files do exist: 14s LLVM Version (before this change) --------------------------------- `.gcda' files don't exist: 28s `.gcda' files do exist: 28s LLVM Version (with this change) ------------------------------- `.gcda' files don't exist: 18s `.gcda' files do exist: 4s It's a win-win-win-win-lose-win-win scenario! <rdar://problem/13466086> llvm-svn: 182563
Diffstat (limited to 'compiler-rt/SDKs/linux/usr/include/stdlib.h')
-rw-r--r--compiler-rt/SDKs/linux/usr/include/stdlib.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler-rt/SDKs/linux/usr/include/stdlib.h b/compiler-rt/SDKs/linux/usr/include/stdlib.h
index e6b8bf71023..966b29db6e1 100644
--- a/compiler-rt/SDKs/linux/usr/include/stdlib.h
+++ b/compiler-rt/SDKs/linux/usr/include/stdlib.h
@@ -30,5 +30,7 @@ char *getenv(const char *) __attribute__((__nothrow__))
__attribute__((__warn_unused_result__));
void *malloc(size_t) __attribute__((__nothrow__)) __attribute((__malloc__))
__attribute__((__warn_unused_result__));
+void *realloc(void *, size_t) __attribute__((__nothrow__)) __attribute((__malloc__))
+ __attribute__((__warn_unused_result__));
#endif /* __STDLIB_H__ */
OpenPOWER on IntegriCloud