summaryrefslogtreecommitdiff
path: root/printf_vs_snprintf_plus_write.c
diff options
context:
space:
mode:
Diffstat (limited to 'printf_vs_snprintf_plus_write.c')
-rw-r--r--printf_vs_snprintf_plus_write.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/printf_vs_snprintf_plus_write.c b/printf_vs_snprintf_plus_write.c
new file mode 100644
index 0000000..0527079
--- /dev/null
+++ b/printf_vs_snprintf_plus_write.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <time.h>
+
+#define NUM 1234567890
+#define BUFSIZE 25
+
+int main(void)
+{
+ int pid = fork();
+ char buffer[BUFSIZE + 1];
+ time_t time_taken;
+
+ if (pid == 0) { //slightly slower result
+ for (int i = 0; i < NUM; ++i) {
+ printf("Child: %d\n", i);
+ }
+ time_taken = time(&time_taken);
+ } else { //slightly faster result
+ for (int i = 0; i < NUM; ++i) {
+ snprintf(buffer, BUFSIZE, "Parent: %d\n", i);
+ write(1, buffer, BUFSIZE);
+ }
+ time_taken = time(&time_taken);
+ }
+
+ fprintf(stderr, "time taken: %zu", time_taken);
+ return 0;
+}