diff options
| author | Miguel <m.i@gmx.at> | 2019-03-17 13:34:44 +0100 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2019-03-17 13:34:44 +0100 |
| commit | 331195b0d690d89d43e7eca9565ea2b013e87f25 (patch) | |
| tree | cda936e57d6378183d535800d9c3dec0a0267350 /080_blog/00040_Haskell/00065_Base64-Encoder | |
| parent | 3b32429a0064159842a4147eb4accc7bdba63553 (diff) | |
many things
Diffstat (limited to '080_blog/00040_Haskell/00065_Base64-Encoder')
| -rw-r--r-- | 080_blog/00040_Haskell/00065_Base64-Encoder/base64.cast | 220 | ||||
| -rw-r--r-- | 080_blog/00040_Haskell/00065_Base64-Encoder/index.md | 11 |
2 files changed, 74 insertions, 157 deletions
diff --git a/080_blog/00040_Haskell/00065_Base64-Encoder/base64.cast b/080_blog/00040_Haskell/00065_Base64-Encoder/base64.cast index 54f3ab5..b32cd78 100644 --- a/080_blog/00040_Haskell/00065_Base64-Encoder/base64.cast +++ b/080_blog/00040_Haskell/00065_Base64-Encoder/base64.cast @@ -1,226 +1,146 @@ { - "command": null, - "width": 101, - "title": null, - "height": 6, "env": { - "SHELL": "/bin/bash", - "TERM": "screen-256color" + "TERM": "screen-256color", + "SHELL": "/bin/bash" }, + "version": 1, + "command": null, + "title": null, + "width": 90, + "height": 7, + "duration": 26.498611, "stdout": [ [ - 0.020042, + 0.018948, "miguel@megaloman:~/git/haskell/base64$ " ], [ - 0.972847, - "cat /dev/urandom | pv | ./base64 > /dev/null " + 0.831467, + "cat /tmp/random.bin | pv | ./base64 > /dev/null " ], [ - 0.43902, - "\r\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[1Pecho \"Welcome to Base64 encoding\" | ./base64" + 0.269283, + "\r\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[17Pecho \"Hello Base64!\" | ./base64" ], [ - 0.83889, + 1.242802, "\r\n" ], [ - 0.001251, - "V2VsY29tZSB0byBCYXNlNjQgZW5jb2RpbmcK\r\n" + 0.002817, + "SGVsbG8gQmFzZTY0IQo=\r\n" ], [ - 0.000356, + 0.000531, "miguel@megaloman:~/git/haskell/base64$ " ], [ - 1.151505, - "echo \"Welcome to Base64 encoding\" | ./base64" + 0.827791, + "echo \"Hello Base64!\" | ./base64" ], [ - 0.328933, - "\r\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[C\u001b[Ccat /dev/urandom | pv | ./base64 > /dev/null " + 0.207417, + "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bcat /tmp/random.bin | pv | ./base64 > /dev/null " ], [ - 0.833, + 0.963475, "\r\n" ], [ - 1.001665, - " 253MiB 0:00:01 [ 253MiB/s] [ <=> ]\r" - ], - [ - 0.999837, - " 500MiB 0:00:02 [ 247MiB/s] [ <=> ]\r" - ], - [ - 1.000048, - " 753MiB 0:00:03 [ 252MiB/s] [ <=> ]\r" - ], - [ - 1.000117, - "1001MiB 0:00:04 [ 247MiB/s] [ <=> ]\r" - ], - [ - 0.999649, - "1.22GiB 0:00:05 [ 251MiB/s] [ <=> ]\r" - ], - [ - 1.000026, - "1.47GiB 0:00:06 [ 250MiB/s] [ <=> ]\r" - ], - [ - 1.000236, - "1.72GiB 0:00:07 [ 253MiB/s] [ <=> ]\r" - ], - [ - 1.000056, - "1.96GiB 0:00:08 [ 252MiB/s] [ <=> ]\r" - ], - [ - 0.999645, - " 2.2GiB 0:00:09 [ 244MiB/s] [ <=> ]\r" - ], - [ - 1.000274, - "2.45GiB 0:00:10 [ 253MiB/s] [ <=> ]\r" - ], - [ - 0.999751, - "2.69GiB 0:00:11 [ 244MiB/s] [ <=> ]\r" + 1.002914, + " 434MiB 0:00:01 [ 434MiB/s] [ <=> ]\r" ], [ - 1.000191, - "2.93GiB 0:00:12 [ 252MiB/s] [ <=> ]\r" + 0.99997, + " 876MiB 0:00:02 [ 441MiB/s] [ <=> ]\r" ], [ - 0.999772, - "3.18GiB 0:00:13 [ 248MiB/s] [ <=> ]\r" + 1.000022, + "1.28GiB 0:00:03 [ 439MiB/s] [ <=> ]\r" ], [ - 1.000312, - "3.43GiB 0:00:14 [ 257MiB/s] [ <=> ]\r" + 1.000032, + "1.73GiB 0:00:04 [ 455MiB/s] [ <=> ]\r" ], [ - 0.999856, - "3.68GiB 0:00:15 [ 254MiB/s] [ <=> ]\r" - ], - [ - 1.000239, - "3.93GiB 0:00:16 [ 253MiB/s] [ <=> ]\r" - ], - [ - 0.99986, - "4.17GiB 0:00:17 [ 248MiB/s] [ <=> ]\r" - ], - [ - 0.999739, - " 4.4GiB 0:00:18 [ 242MiB/s] [ <=> ]\r" - ], - [ - 1.000023, - "4.65GiB 0:00:19 [ 252MiB/s] [ <=> ]\r" - ], - [ - 1.000103, - "4.89GiB 0:00:20 [ 245MiB/s] [ <=> ]\r" - ], - [ - 1.000106, - "5.14GiB 0:00:21 [ 255MiB/s] [ <=> ]\r" - ], - [ - 1.000102, - "5.38GiB 0:00:22 [ 246MiB/s] [ <=> ]\r" - ], - [ - 1.000042, - "5.63GiB 0:00:23 [ 252MiB/s] [ <=> ]\r" - ], - [ - 0.999787, - "5.87GiB 0:00:24 [ 250MiB/s] [ <=> ]\r" - ], - [ - 1.000079, - "6.11GiB 0:00:25 [ 248MiB/s] [ <=> ]\r" + 0.999929, + "2.18GiB 0:00:05 [ 464MiB/s] [ <=> ]\r" ], [ - 1.000035, - "6.36GiB 0:00:26 [ 247MiB/s] [ <=> ]\r" + 0.999976, + "2.64GiB 0:00:06 [ 464MiB/s] [ <=> ]\r" ], [ - 0.999929, - " 6.6GiB 0:00:27 [ 250MiB/s] [ <=> ]\r" + 1.000019, + "3.09GiB 0:00:07 [ 466MiB/s] [ <=> ]\r" ], [ - 0.999966, - "6.84GiB 0:00:28 [ 244MiB/s] [ <=> ]\r" + 1.00003, + "3.55GiB 0:00:08 [ 467MiB/s] [ <=> ]\r" ], [ - 1.000047, - "7.09GiB 0:00:29 [ 252MiB/s] [ <=> ]\r" + 1.0, + "3.99GiB 0:00:09 [ 452MiB/s] [ <=> ]\r" ], [ - 0.999829, - "7.33GiB 0:00:30 [ 250MiB/s] [ <=> ]\r" + 0.999962, + "4.43GiB 0:00:10 [ 451MiB/s] [ <=> ]\r" ], [ - 0.99996, - "7.57GiB 0:00:31 [ 245MiB/s] [ <=> ]\r" + 1.000027, + "4.88GiB 0:00:11 [ 459MiB/s] [ <=> ]\r" ], [ - 1.000063, - "7.81GiB 0:00:32 [ 248MiB/s] [ <=> ]\r" + 1.000061, + "5.32GiB 0:00:12 [ 451MiB/s] [ <=> ]\r" ], [ - 0.999947, - "8.06GiB 0:00:33 [ 251MiB/s] [ <=> ]\r" + 0.999986, + "5.76GiB 0:00:13 [ 449MiB/s] [ <=> ]\r" ], [ - 1.000249, - " 8.3GiB 0:00:34 [ 246MiB/s] [ <=> ]\r" + 0.999944, + "6.19GiB 0:00:14 [ 441MiB/s] [ <=> ]\r" ], [ - 1.000158, - "8.55GiB 0:00:35 [ 253MiB/s] [ <=> ]\r" + 0.999991, + "6.64GiB 0:00:15 [ 453MiB/s] [ <=> ]\r" ], [ - 0.999634, - "8.79GiB 0:00:36 [ 254MiB/s] [ <=> ]\r" + 1.000027, + "7.07GiB 0:00:16 [ 442MiB/s] [ <=> ]\r" ], [ - 1.000289, - "9.04GiB 0:00:37 [ 251MiB/s] [ <=> ]\r" + 1.00001, + " 7.5GiB 0:00:17 [ 442MiB/s] [ <=> ]\r" ], [ - 0.99977, - "9.29GiB 0:00:38 [ 251MiB/s] [ <=> ]\r" + 1.000009, + "7.93GiB 0:00:18 [ 440MiB/s] [ <=> ]\r" ], [ - 1.000013, - "9.53GiB 0:00:39 [ 248MiB/s] [ <=> ]\r" + 0.999988, + "8.37GiB 0:00:19 [ 449MiB/s] [ <=> ]\r" ], [ - 1.000045, - "9.77GiB 0:00:40 [ 247MiB/s] [ <=> ]\r" + 1.000024, + "8.81GiB 0:00:20 [ 445MiB/s] [ <=> ]\r" ], [ - 0.999859, - " 10GiB 0:00:41 [ 248MiB/s] [ <=> ]\r" + 0.99992, + "9.26GiB 0:00:21 [ 461MiB/s] [ <=> ]\r" ], [ - 0.760304, - "^C\r\n" + 1.000016, + "9.71GiB 0:00:22 [ 461MiB/s] [ <=> ]\r" ], [ - 0.000409, - "\r\n" + 0.129892, + "9.77GiB 0:00:22 [ 451MiB/s] [ <=> ]\r\r\n" ], [ - 0.000128, + 0.000604, "miguel@megaloman:~/git/haskell/base64$ " ] - ], - "version": 1, - "duration": 46.348438 + ] }
\ No newline at end of file diff --git a/080_blog/00040_Haskell/00065_Base64-Encoder/index.md b/080_blog/00040_Haskell/00065_Base64-Encoder/index.md index 3fd87ee..cabf19e 100644 --- a/080_blog/00040_Haskell/00065_Base64-Encoder/index.md +++ b/080_blog/00040_Haskell/00065_Base64-Encoder/index.md @@ -1,15 +1,12 @@ Miguel's Base64 Encoder ======================= February 19, 2018 - Initially coded on a cold winter afternoon to fully understand **base64 encoding** and play with -**Haskell**, which is always an indisputable pleasure. - -Coded in _big anger_, due to my friend Nick's fairy tales about saving his encrypted binary -data in plain _ASCII_ configuration files, featuring strange letters and non-printable characters. :smile: +**Haskell**, which is always an indisputable pleasure. Hacked together in _big anger_, due to my +friend Nick's fairy tales about saving his encrypted binary data in plain _ASCII_ +configuration files,... featuring strange letters and non-printable characters. :smile: -_EDIT_: After optimizing my naive implementation, the encoder now reaches speeds -of around **240MB/s** on a single core of my _i7-4790K_. +After optimizing quite a bit, the encoder performs around **460MB/s** on a single core of my _i7-4790K_. <asciinema-player loop="1" preload="true" theme="solarized-dark" autoplay="true" src="base64.cast"></asciinema-player> |
