jfreesvg
Drachennest
jfreesvg | Drachennest | |
---|---|---|
2 | 2 | |
312 | 111 | |
- | - | |
4.9 | 10.0 | |
19 days ago | over 1 year ago | |
Java | C++ | |
GNU General Public License v3.0 only | Boost Software License 1.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
jfreesvg
- Reducing code size in (Rust) librsvg by removing an unnecessary generic struct
-
Different algorithms for converting binary to decimal floating-point numbers
In Java, many number-to-string implementations use NumberFormat. This is abysmally slow if the problem domain doesn't require internationalization, which is the case for machine-readable file formats, such as SVG. When I performance tested JMathTeX for rendering TeX, the bottleneck for converting TeX into SVG elements was JFreeSVG's use of NumberFormat[0]. Replacing NumberFormat with RyuDouble doubled the throughput[1]. (Reusing a StringBuilder for to concatenate strings yielded another doubling.)
For KeenType[2], a fork of the New Typesetting System (and more complete TeX implementation than JMathTeX), I added an SVG generator that converts numbers to string using a StackOverflow answer[3], instead of using Ryu[4]. The performance was even better and the algorithm vastly simpler.
Knuth was right: measure, then optimize.
[0]: https://github.com/jfree/jfreesvg
[1]: https://github.com/jfree/jfreesvg/pull/30
[2]: https://github.com/DaveJarvis/KeenType
[3]: https://stackoverflow.com/a/10554128/59087
[4]: https://github.com/DaveJarvis/KeenType/blob/fef005579021f394...
Drachennest
What are some alternatives?
KeenType - Pure Java typesetting system
Kraken - Kraken is an open-source modern math library that comes with a fast-fixed matrix class and math-related functions.
llvm-project - The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
number-precision - 🚀1K tiny & fast lib for doing addition, subtraction, multiplication and division operations precisely
async-profiler - Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events
CNumbers - General classes for working with numbers
Mockito - Most popular Mocking framework for unit tests written in Java