Event : Visual Studio Users Community Japan #1
Date : 2019/09/14
ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。
このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。
The document discusses implementing multiple-precision arithmetic in WebAssembly. It describes how carry operations are important for multiple-precision addition and multiplication but are not supported natively in WebAssembly. It proposes some strategies for emulating carry operations in WebAssembly using instructions like add, lt_u, and select to add multiples of 64-bit elements with carry propagation. Benchmark results show that 32-bit element processing can outperform 64-bit element processing for some operations like multiplication in WebAssembly. Overall, implementing efficient multiple-precision arithmetic in WebAssembly requires emulating carry operations that are supported directly in x64 processors.
Event : Visual Studio Users Community Japan #1
Date : 2019/09/14
ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。
このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。
The document discusses implementing multiple-precision arithmetic in WebAssembly. It describes how carry operations are important for multiple-precision addition and multiplication but are not supported natively in WebAssembly. It proposes some strategies for emulating carry operations in WebAssembly using instructions like add, lt_u, and select to add multiples of 64-bit elements with carry propagation. Benchmark results show that 32-bit element processing can outperform 64-bit element processing for some operations like multiplication in WebAssembly. Overall, implementing efficient multiple-precision arithmetic in WebAssembly requires emulating carry operations that are supported directly in x64 processors.
The document discusses polyglot programming capabilities in the GraalVM. It describes how GraalVM allows different programming languages like JavaScript, Ruby, R, and native languages to run on the same virtual machine. It shows benchmarks demonstrating that GraalVM can achieve performance comparable or better than standalone language implementations. The document also explains how languages can interoperate in GraalVM using an interop API to call functions defined in one language from another language.
This document discusses several popular Java libraries including:
- Dependency injection frameworks like Guice and Spring
- Logging with SLF4J
- Collections and utilities with Guava
- HTTP clients like OkHttp
- Reactive programming with RxJava
- REST with Retrofit
- Asynchronous programming with JDeferred
- Event handling with MBassador
- Code generation with Lombok and ByteBuddy
- Testing utilities like JUnitParams, Mockito, Jukito, and Spock
- Waiting assertions with Awaitility and REST testing with Rest-assured.
Kotlin is a statically typed programming language that runs on the JVM and is fully interoperable with Java. The document discusses some key reasons why Java engineers should consider Kotlin, including that it is more concise, safe, and versatile compared to Java. It also provides examples showing how Kotlin code can be more concise than equivalent Java code through features like data classes, default values, named arguments, and standard library functions.
This document discusses polyglot programming capabilities in the Graal VM. It describes how Graal VM supports multiple languages like JavaScript, Ruby, R, and C/C++ running on a single high-performance virtual machine. It demonstrates how to call functions between languages using an interoperability API and shows that polyglot applications can achieve performance comparable to using individual language VMs.
The document describes the steps taken to compile the Clojure function fact into Java bytecode. It shows the Clojure definition, the macro expansion, analysis, and emission steps, and ultimately the generated Java bytecode with instructions for recursively calculating the factorial of a number.