From e9794bc0c7bf563c694a062e57e6b6bd7aa93ba9 Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Thu, 26 Sep 2019 23:25:42 -0400 Subject: [PATCH] Renaming and cleanup --- ...d => 2019-09-01-binary-format-shootout.md} | 2 +- _posts/2019-09-01-binary-shootout-part-1.md | 47 ------------------- 2 files changed, 1 insertion(+), 48 deletions(-) rename _posts/{2019-09-01-binary-shootout-part-0.md => 2019-09-01-binary-format-shootout.md} (99%) delete mode 100644 _posts/2019-09-01-binary-shootout-part-1.md diff --git a/_posts/2019-09-01-binary-shootout-part-0.md b/_posts/2019-09-01-binary-format-shootout.md similarity index 99% rename from _posts/2019-09-01-binary-shootout-part-0.md rename to _posts/2019-09-01-binary-format-shootout.md index 0574a6c..192eb03 100644 --- a/_posts/2019-09-01-binary-shootout-part-0.md +++ b/_posts/2019-09-01-binary-format-shootout.md @@ -3,7 +3,7 @@ layout: post title: "Binary Format Shootout" description: "Making sense of binary streams" category: -tags: [rust, binary-shootout] +tags: [rust] --- I've found that in many personal projects, [analysis paralysis](https://en.wikipedia.org/wiki/Analysis_paralysis) diff --git a/_posts/2019-09-01-binary-shootout-part-1.md b/_posts/2019-09-01-binary-shootout-part-1.md deleted file mode 100644 index c62eb04..0000000 --- a/_posts/2019-09-01-binary-shootout-part-1.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: post -title: "new post" -description: "" -category: -tags: [] ---- - -# Designing the Test - -My use case is as follows: ingest binary market data from -[IEX](https://iextrading.com/trading/market-data/) and turn it into -a format understandable by each library being tested. Then we'll -write a simple program to find total trade volume per ticker, -and the highest and lowest bid/ask price per ticker as well. - -Note: Market data is the use case here -simply because IEX makes the data freely available; no code or analysis -in this blog is related to my past or present work. - -Now, the basic criteria used to evaluate each library: - -1) The library must have cross-language support, and treat Rust as a -first-class citizen. - -2) The schema must be able to evolve and add new fields. The information -I'm gathering now is fairly simple, but would evolve in the future. - -3) Performance is a priority; material performance differences -(time to de/serialize, memory usage) matter. - -Under those three criteria, we're excluding a lot of systems that -may make sense in other contexts: - -- [Bincode](https://github.com/servo/bincode) has great Rust support -and a simple wire format (message structure) but isn't usable from -other languages and doesn't deal well with schema evolution. - -- [Protocol Buffers](https://developers.google.com/protocol-buffers/) have -great cross-language support, but material performance issues compared -to other systems like FlatBuffers. - -- JSON/Msgpack are schema-less; while the wire format is simple, -having code generated from a schema is too nice to pass up. - -While each of these have a niche they perform well in, they're not -suited for the system under consideration. \ No newline at end of file