[glib] gio-tool: Unify buffer sizes
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] gio-tool: Unify buffer sizes
- Date: Fri, 18 Aug 2017 12:47:00 +0000 (UTC)
commit 37cddec0ee141beefc74e2b67f2e0808d3c94ff2
Author: Ondrej Holy <oholy redhat com>
Date: Fri Aug 11 13:21:28 2017 +0200
gio-tool: Unify buffer sizes
Recently, buffer size for copying has been increased in order to improve
performance:
https://bugzilla.gnome.org/show_bug.cgi?id=773823
Let's do the same for gio-tool-save and gio-tool-cat.
https://bugzilla.gnome.org/show_bug.cgi?id=786460
gio/gio-tool-cat.c | 10 ++++++++--
gio/gio-tool-save.c | 9 +++++++--
2 files changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/gio/gio-tool-cat.c b/gio/gio-tool-cat.c
index 1e40188..086fcf5 100644
--- a/gio/gio-tool-cat.c
+++ b/gio/gio-tool-cat.c
@@ -42,11 +42,14 @@ static const GOptionEntry entries[] = {
{ NULL }
};
+/* 256k minus malloc overhead */
+#define STREAM_BUFFER_SIZE (1024*256 - 2*sizeof(gpointer))
+
static gboolean
cat (GFile *file)
{
GInputStream *in;
- char buffer[1024 * 8 + 1];
+ char *buffer;
char *p;
gssize res;
gboolean close_res;
@@ -62,10 +65,11 @@ cat (GFile *file)
return FALSE;
}
+ buffer = g_malloc (STREAM_BUFFER_SIZE);
success = TRUE;
while (1)
{
- res = g_input_stream_read (in, buffer, sizeof (buffer) - 1, NULL, &error);
+ res = g_input_stream_read (in, buffer, STREAM_BUFFER_SIZE, NULL, &error);
if (res > 0)
{
gssize written;
@@ -109,6 +113,8 @@ cat (GFile *file)
success = FALSE;
}
+ g_free (buffer);
+
return success;
}
diff --git a/gio/gio-tool-save.c b/gio/gio-tool-save.c
index 49ab720..370299c 100644
--- a/gio/gio-tool-save.c
+++ b/gio/gio-tool-save.c
@@ -58,12 +58,15 @@ static const GOptionEntry entries[] =
{ NULL }
};
+/* 256k minus malloc overhead */
+#define STREAM_BUFFER_SIZE (1024*256 - 2*sizeof(gpointer))
+
static gboolean
save (GFile *file)
{
GOutputStream *out;
GFileCreateFlags flags;
- char buffer[1025];
+ char *buffer;
char *p;
gssize res;
gboolean close_res;
@@ -88,11 +91,12 @@ save (GFile *file)
return FALSE;
}
+ buffer = g_malloc (STREAM_BUFFER_SIZE);
save_res = TRUE;
while (1)
{
- res = read (STDIN_FILENO, buffer, 1024);
+ res = read (STDIN_FILENO, buffer, STREAM_BUFFER_SIZE);
if (res > 0)
{
gssize written;
@@ -147,6 +151,7 @@ save (GFile *file)
}
g_object_unref (out);
+ g_free (buffer);
return save_res;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]