enso/docs/infrastructure
Radosław Waśko c1259cb4d2
Compare performance of Panic / Java Exception / Dataflow error (#8130)
After a discussion, I was really curious that our panics are supposed to be almost free - and while trusting that statement, it was really hard to believe - so I wanted to see for myself - knowing that an experiment is the most robust source of this kind of information - testing that in practice.

So I wrote a benchmark comparing various ways of reporting errors, also testing them both at 'shallow' and 'deep' stack traces (adding 200 additional frames) - to see how stack depth affects them, if at all.

The panics are indeed blazing fast! Kudos to the engine team. However, it seems that our dataflow errors are relatively slow (and we tend to use them _more_ than panics and want to be using them more and more). This uncovers a possible optimization opportunity. Can we make them as fast as panics??

Analysis of the benchmark results in comment below.
2023-10-24 12:03:44 +00:00
..
benchmarks.md Compare performance of Panic / Java Exception / Dataflow error (#8130) 2023-10-24 12:03:44 +00:00
java-11.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00
logging.md Enable log-to-file configuration (#7918) 2023-10-02 14:25:09 +02:00
native-image.md Optional Espresso support with ENSO_JAVA=espresso env variable 2023-09-19 15:10:12 +02:00
README.md Invoke all Enso benchmarks via JMH (#7101) 2023-08-07 12:39:01 +00:00
rust.md Bump GraalVM Version to 20.2.0 (#1094) 2020-08-28 13:03:09 +02:00
sbt.md Register instruments/language in their own compilation units to fix the sbt build issues (#3509) 2022-06-13 14:09:08 +00:00
upgrading-graalvm.md Update GraalVM to 22.3.1 (#5602) 2023-02-14 15:51:17 +00:00

layout title category tags order
section-summary Infrastructure infrastructure
infrastructure
readme
0

Infrastructure

The Enso runtime runs on the GraalVM which is a version of the JVM. This folder contains all documentation pertaining to Enso's infrastructure, which is broken up as follows:

  • sbt: The build tools that are used for building the project.
  • Java 11: Description of changes related to the Java 11 migration.
  • Native Image: Description of the Native Image build used for building the launcher native binary.
  • Rust: Description of integration of the Scala project with the Rust components.
  • Upgrading GraalVM: Description of steps that have to be performed by each developer when the project is upgraded to a new version of GraalVM.
  • Benchmarks: Description of the benchmarking infrastructure used for measuring performance of the runtime.
  • Logging: Description of an unified and centralized logging infrastructure that should be used by all components.