expand on performance information in README

This commit is contained in:
Yehowshua Immanuel 2022-08-11 19:58:43 -04:00
parent fd31ec1358
commit 55fc5b586e

View file

@ -3,14 +3,41 @@ Copyright - Yehowshua Immanuel
# A High performance, VCD Parser written in Rust # A High performance, VCD Parser written in Rust
## Current Features ## Current Features
- pretty fast, parses 3.04 GB VCD file in ~27.23s on M1 Macbook Air with
respect to 30s with GTKWave on the same device. FastWave currently FastWave currently offers highly robust error(at least on the sample
offers highly robust error(at least on the sample VCD files in this VCD files in this repository) handling which GTKWave doesn't have. For
repository) handling which GTKWave doesn't have. eample, selecting the ``UTILIZATON_ENABLED`` after opening
[test2x2_regex22_string1.vcd](./test-vcd-files/xilinx_isim/test2x2_regex22_string1.vcd),
(one of the sample xilinx vcd test files) in GtkWave, will crash GtkWave since
this signal is malformed. FastWave on the otherhand simply informs you the
signal is malformed.
## Performance
### Methods
Below is a table of performance comparisons on a large 3.04GB VCD file
that can be found
[here](https://drive.google.com/file/d/1pfm2qo2l8fGTHHJ8TLrg1vSGaV_TUbp2/view?usp=sharing).
For getting the GtkWave results, I fired up GtkWave, clicke on
``File``->``Open New Window``, and selected the large VCD file.
I started my stopwatch as soon as I pressed enter to beging loading the VCD
file, and stopped my stopwatch once the GtkWave titlebar reached 100%.
I noticed that when running FastWave in the VsCode terminal as opposed To get the memory consumption, I opened Activity Monitor on Mac, and recorded
to the MacOS system terminal or the Lapce terminal, FastWave is notably the GtkWave memory usage before and after loading the large VCD file, and
slower. took the difference.
I noticed that when running FastWave in the VsCode terminal as opposed
to the MacOS system terminal or the Lapce terminal, FastWave is notably
slower.
### Results
| Software | Time(s) | Memory(MB) |
|----------|---------|------------|
| GtkWave | ~30 | 89.8 |
| FastWave | 15.09 | 267.3 |
# Current Limitations # Current Limitations
@ -40,22 +67,13 @@ Here's a command to test on a malformed VCD:
# TODO # TODO
## Features ## Features
- [ ] remove Result<..> from reader
- [ ] be explicit with imports, remove exports as possible - [ ] be explicit with imports, remove exports as possible
once FastWave is known to be fairly stable. once FastWave is known to be fairly stable.
- [ ] do a read through all the code - [ ] do a read through all the code
- make contents of src/types.rs all public - make contents of src/types.rs public as necessary.
- [ ] macro for getting line number when propagating errors
- [ ] search for any ok_or's
- [ ] search for any unwraps or any direct vectors indexing
- [ ]
- [ ] re-order all signal timelines as binary balanced trees with respect to timestamps
- support multithreaded re-ordering
- [ ] looks into making a macro for filename and linenumber later
- [ ] Print out git commit or release number. - [ ] Print out git commit or release number.
- [ ] Should be able to load waveform whilst viewing it live.
- could be quite challenging to implement for various reasons
- [ ] Take a look at GTKWave parser to compare efficiency. - [ ] Take a look at GTKWave parser to compare efficiency.
- [ ] Move part of the performance section to another markdown file.
## Repairs ## Repairs
- [ ] make a custom date parser for possibly up to 18 different versions(that is, for each possible tool). - [ ] make a custom date parser for possibly up to 18 different versions(that is, for each possible tool).
@ -64,7 +82,10 @@ Here's a command to test on a malformed VCD:
able to successfully parse all sample VCDs. able to successfully parse all sample VCDs.
## Code Consistency ## Code Consistency
- [ ] Change error messages to line and filenames. Go through all calls to ``format!`` whilst also keeping performance in mind. - [ ] Change error messages to line and filenames. Go through all calls to unwrap.
- [ ] search for any unwraps or any direct vectors indexing
- [ ] Handle TODOs
- [ ] Remove debug code/comments.
## Marketing ## Marketing
- [ ] Send survey to community - [ ] Send survey to community