[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] read-file: Avoid memory reallocations with seekable files.
From: |
Giuseppe Scrivano |
Subject: |
[PATCH] read-file: Avoid memory reallocations with seekable files. |
Date: |
Tue, 03 Aug 2010 15:50:18 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) |
Hi,
while using the read-file module, I found it can be optimized on
seekable files using the the file length as the initial buffer size; it
avoids some unnecessary reallocations.
Cheers,
Giuseppe
>From 41bc1ff07e437f524cf6cf235b9017aca1ed8a6a Mon Sep 17 00:00:00 2001
From: Giuseppe Scrivano <address@hidden>
Date: Tue, 3 Aug 2010 15:40:19 +0200
Subject: [PATCH] read-file: Avoid memory reallocations with seekable files.
* lib/read-file.c (fread_file): With seekable files, use the file
length as the initial buffer size.
---
ChangeLog | 6 ++++++
lib/read-file.c | 18 ++++++++++++++++++
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4d24a34..64a6042 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-03 Giuseppe Scrivano <address@hidden>
+
+ read-file: Avoid memory reallocations with seekable files.
+ * lib/read-file.c (fread_file): With seekable files, use the file
+ length as the initial buffer size.
+
2010-08-01 Bruno Haible <address@hidden>
Integrate the regex documentation.
diff --git a/lib/read-file.c b/lib/read-file.c
index 6b655db..b0ceb1f 100644
--- a/lib/read-file.c
+++ b/lib/read-file.c
@@ -38,6 +38,24 @@ fread_file (FILE * stream, size_t * length)
size_t alloc = 0;
size_t size = 0;
int save_errno;
+ long pos;
+
+ if ((pos = fseek (stream, 0, SEEK_CUR)) == 0)
+ {
+ long size;
+
+ if (fseek (stream, 0, SEEK_END) < 0)
+ return NULL;
+
+ size = ftell (stream);
+ if (size < 0 || fseek (stream, pos, SEEK_SET) < 0)
+ return NULL;
+
+ alloc = size + 1;
+ buf = malloc (alloc);
+ if (!buf)
+ return NULL;
+ }
for (;;)
{
--
1.7.1
- [PATCH] read-file: Avoid memory reallocations with seekable files.,
Giuseppe Scrivano <=
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Paul Eggert, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Giuseppe Scrivano, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Paul Eggert, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Bruno Haible, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Paul Eggert, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Giuseppe Scrivano, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Paul Eggert, 2010/08/03
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Giuseppe Scrivano, 2010/08/04
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Giuseppe Scrivano, 2010/08/10
- Re: [PATCH] read-file: Avoid memory reallocations with seekable files., Giuseppe Scrivano, 2010/08/18