enso/lib/scala
Marcin Kostrzewa 242bd52942
Unboxed atoms (#3862)
Introduces unboxed (and arity-specialized) storage schemes for Atoms. It results in improvements both in memory consumption and runtime.
Memory wise: instead of using an array, we now use object fields. We also enable unboxing. This cuts a good few pointers in an unboxed object. E.g. a quadruple of integers is now 64 bytes (4x8 bytes for long fields + 16 bytes for layout and constructor pointers + 16 bytes for a class header). It used to be 168 bytes  (4x24 bytes for boxed Longs + 16 bytes for array header + 32 bytes for array contents +  8 bytes for constructor ptr  + 16 bytes for class header), so we're saving 104 bytes a piece. In the least impressive scenarios (all-boxed fields) we're saving 8 bytes per object (saving 16 bytes for array header, using 8 bytes for the new layout field). In the most-benchmarked case (list of longs), we save 32 bytes per cons-cell.
Time wise:
All list-summing benchmarks observe a ~2x speedup. List generation benchmarks get ~25x speedups, probably both due to less GC activity and better allocation characteristics (only allocating one object per Cons, rather than Cons + Object[] for fields). The "map-reverse" family gets a neat 10x speedup (part of the work is reading, which is 2x faster, the other is allocating, which is now 25x faster, we end up with 10x when combined).
2023-01-24 13:03:06 +00:00
..
akka-native/src/main Project Manager Native Image (#1318) 2020-12-09 14:58:11 +01:00
cli/src Getting and Setting Library Metadata (#1967) 2021-08-20 10:23:05 +02:00
connected-lock-manager/src Make Library-Related Operations Not Block the Actor System (#1975) 2021-08-30 15:51:38 +02:00
distribution-manager/src/main/scala/org/enso/distribution Implement library/preinstall (Without Dependencies Yet) (#1972) 2021-08-27 14:01:13 +02:00
docs-generator Fix multiline code docparser (#3379) 2022-04-06 04:39:58 +00:00
downloader/src Revert "Revert "Library Publishing MVP (#1898)"" (#1933) 2021-08-09 16:00:04 +02:00
edition-updater/src Update the Language Server API (#3308) 2022-03-03 16:28:04 +03:00
edition-uploader/src/main/scala/org/enso/build Updating Editions (#1944) 2021-08-12 16:55:23 +02:00
editions/src Update the Language Server API (#3308) 2022-03-03 16:28:04 +03:00
flexer Bump scalac to 2.13.5 (#1531) 2021-03-01 16:35:57 +00:00
graph Bump SBT and Scalafmt (#1203) 2020-10-22 16:12:28 +02:00
interpreter-dsl/src/main/java/org/enso/interpreter/dsl Unboxed atoms (#3862) 2023-01-24 13:03:06 +00:00
json-rpc-server Message handler supervisor (#3881) 2022-11-17 19:02:04 +00:00
json-rpc-server-test Project save backed by git (#3851) 2022-11-14 17:32:39 +00:00
library-manager/src Add API for component groups (#3286) 2022-02-24 15:41:14 +03:00
library-manager-test/src Disable npm install in tests on CI (#3620) 2022-07-28 10:35:25 +00:00
locking-test-helper/src/main/scala/org/enso/runtimeversionmanager/test Make Locking Thread-Safe (#1267) 2020-11-06 13:53:45 +01:00
logger Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
logging-service/src Fix serialization of NPE in logger (#4055) 2023-01-16 18:38:28 +00:00
logging-truffle-connector/src/main Dynamically Loading Libraries (#1826) 2021-07-06 00:27:14 +02:00
logging-utils/src Apply automatic formatting prior to turning on checks (#3405) 2022-04-19 12:34:34 +02:00
parser-service Update Scala to 2.13.7 (#3214) 2021-12-31 17:50:32 +03:00
pkg Move Create New Project button to top. (#3972) 2022-12-12 15:30:36 +00:00
profiling-utils/src/main/scala/org/enso/profiling Update profiling CLI arguments (#3461) 2022-05-24 16:01:26 +03:00
project-manager Message handler supervisor (#3881) 2022-11-17 19:02:04 +00:00
runtime-version-manager/src Improve undefined method error message on builtin types (#3907) 2022-11-30 13:37:17 +01:00
runtime-version-manager-test/src Explicit self (#3569) 2022-07-27 17:45:36 +00:00
searcher/src Documentation for functions and locals (#4029) 2023-01-10 16:59:53 +00:00
syntax Cleanup old benchmark (#3845) 2022-11-03 09:39:06 +00:00
task-progress-notifications/src/main/scala/org/enso/cli/task/notifications New Language Server API Implementations / Mocks (#1875) 2021-07-17 16:49:51 +02:00
testkit/src/main/scala/org/enso/testkit Fix cleanup in tests (#3195) 2021-12-16 17:15:28 +03:00
text-buffer/src Fix TextEdit range (#4069) 2023-01-20 11:31:16 +00:00
version-output/src/main/scala/org/enso/version Bump SBT and Scalafmt (#1203) 2020-10-22 16:12:28 +02:00