Benchmark against EricZimmerman/evtx #248
-
Hi, Question : by how many order of magnitudes is your excellent rust evtx parser faster than this custom C# implementation ? ( https://github.com/EricZimmerman/evtx/blob/master/evtx/EventLog.cs ) Thanks ! Cheers ! ( And thank you very much for this excellent piece of work ) |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
Hey! I think EvtxECmd is a great tool, it's a little bit more bespoke and has some cool feature like the maps and better CSV support. In terms of performance this tool is significantly faster. TL;DR - 10x-100x of performance difference, depends on if we consider multithreading fair game. I've build a release binary, using dotnet core 6 on Ubuntu 24.04. For parsing https://github.com/omerbenamram/evtx/blob/master/samples/security_big_sample.evtx EvtxECmd takes about 16-20 seconds (I've ran it a few times, it's a little sensitive to filesystem/cache timings).
evtx_dump takes around 200 miliseconds and produces the same number of records.
The thing is EvtxECMD doesn't support any multi-threading though, so for an apples to apples comparison, if we limit evtx dump to a single thread, we run at about 1.7~ seconds for the file. Which is an order of magnitude from 17 seconds. This makes sense since rust is significantly more resource efficient than C#. I believe this will be comparable also on windows, even though the dotnet runtime is probably a bit quicker there.
|
Beta Was this translation helpful? Give feedback.
-
OK, thanks for the explanation. I had overlooked the "maps" part of EvtxECmd, it looks pretty relevant to standardise data. Right now having the raw-ish data shipped to some Splunk server with https://github.com/whikernel/evtx2splunk is good enough, while a little bit verbose. Correlating across different kind of logs can be a bit tricky though, given the variety of field names. That project I used mentions https://github.com/libyal/winevt-kb/ to rebuild messages out of raw data, but I could not really understand that |
Beta Was this translation helpful? Give feedback.
Hey! I think EvtxECmd is a great tool, it's a little bit more bespoke and has some cool feature like the maps and better CSV support. In terms of performance this tool is significantly faster.
TL;DR - 10x-100x of performance difference, depends on if we consider multithreading fair game.
I've build a release binary, using dotnet core 6 on Ubuntu 24.04.
For parsing https://github.com/omerbenamram/evtx/blob/master/samples/security_big_sample.evtx
EvtxECmd takes about 16-20 seconds (I've ran it a few times, it's a little sensitive to filesystem/cache timings).