2017-08-09 14:32:35 +00:00
|
|
|
# Welcome to fastutil
|
|
|
|
|
2022-02-10 13:45:44 +00:00
|
|
|
[fastutil](http://fastutil.di.unimi.it/) extends the Java Collections
|
|
|
|
Framework by providing type-specific maps, sets, lists, and queues with a
|
|
|
|
small memory footprint and fast access and insertion; it provides also big
|
|
|
|
(64-bit) arrays, sets, and lists, sorting algorithms, fast, practical I/O
|
|
|
|
classes for binary and text files, and facilities for memory mapping large
|
|
|
|
files.
|
2021-03-29 07:18:35 +00:00
|
|
|
|
2021-09-07 08:45:50 +00:00
|
|
|
Since version 8.5.5, fastutil is split into two jars for convenience:
|
2021-03-29 07:18:35 +00:00
|
|
|
|
|
|
|
- `fastutil-core.jar` contains data structures based on integers, longs,
|
2021-03-29 07:20:08 +00:00
|
|
|
doubles, and objects;
|
2021-03-29 07:18:35 +00:00
|
|
|
|
2021-09-07 08:45:50 +00:00
|
|
|
- `fastutil.jar` is the classic distribution, containing all classes.
|
2021-03-29 07:18:35 +00:00
|
|
|
|
2021-09-07 08:45:50 +00:00
|
|
|
Note that core classes are duplicated in the standard jar, so if you are
|
|
|
|
depending on both (for example, because of transitive dependencies) you
|
|
|
|
should exclude the core jar.
|
2021-03-29 07:18:35 +00:00
|
|
|
|
2021-09-07 08:45:50 +00:00
|
|
|
Previous split versions would provide different classes in different jars,
|
|
|
|
but managing sensibly dependencies turned out to be impossible.
|
2021-03-29 08:14:59 +00:00
|
|
|
|
2021-03-29 07:18:35 +00:00
|
|
|
You can also create a small, customized fastutil jar (which you can put in
|
2021-03-29 07:20:08 +00:00
|
|
|
your repo, local maven repo, etc.) using the `find-deps.sh` shell script.
|
|
|
|
It has mild prerequisites, as only the `jdeps` tool is required (bundled
|
|
|
|
with JDK 8). It can be used to identify all fastutil classes your project
|
|
|
|
uses and build a minimized jar only containing the necessary classes.
|
2017-08-09 14:32:35 +00:00
|
|
|
|
|
|
|
## Building
|
|
|
|
|
2021-04-09 16:23:16 +00:00
|
|
|
First, you have to `make sources` to get the actual Java sources.
|
|
|
|
After that, `ant jar` will generate a single jar file; `ant javadoc` will
|
|
|
|
generate the API documentation; `ant junit` will run the unit tests.
|
2021-03-29 07:22:03 +00:00
|
|
|
|
|
|
|
If you want to obtain the three jars above, you have to run the script
|
|
|
|
`split.sh`, and then `ant osgi-rest`.
|
2017-08-09 14:32:35 +00:00
|
|
|
|
|
|
|
The Java sources are generated using a C preprocessor. The `gencsource.sh`
|
|
|
|
script reads in a driver file, that is, a Java source that uses some
|
|
|
|
preprocessor-defined symbols and some conditional compilation, and produces a
|
|
|
|
(fake) C source, which includes the driver code and some definitions that
|
|
|
|
customize the environment.
|
2002-06-01 08:14:35 +00:00
|
|
|
|
2015-05-11 17:02:32 +00:00
|
|
|
* seba (<mailto:sebastiano.vigna@unimi.it>)
|
2020-10-28 17:44:07 +00:00
|
|
|
* https://groups.google.com/g/fastutil
|