Key takeaways the methodology, whatever that is (e.g. SCRUM, SAFE, etc) should not impose the necessity of having an architect in the team, but rather the real project needs. in the case of greenfield projects, for projects with a lot of external dependencies, projects under intensive development that involve architectural decisions, technology or framework elicitation,…
Logging patterns and their performance impact
Motivation In the current post, I would like to explore different logging patterns and to identify which one is more efficient in terms of performance. Since logging is spread across almost every application, it is important to be aware of what is the most optimal pattern to rely on when writing logging messages. In this…
JVM JIT Compilers Benchmarks Report 19.11
Context and Motivation The current article describes a series of Java Virtual Machine (JVM) Just In Time (JIT) Compilers micro-benchmarks and their results, relying on different optimization patterns or intrinsics support. For the current issue, I included two compilers from OpenJDK 64-Bit Server VM version (build 13+33) C1/C2 JIT Graal JIT From my point of view,…
The Agile Manifesto: A Software Architect’s Perspective
According to the licensing policy, I would like to mention this article was originally published on InfoQ. Key Takeaways While the role and responsibilities of a software architect can be seen as contradictory to the values of the Manifesto for Agile Software Development, a good architect finds techniques that support an agile development team. Working software over…
JVM JIT Compilers Benchmarks Report 19.04
Context and Motivation The current article describes a series of Java Virtual Machine (JVM) Just In Time (JIT) Compilers benchmarks and their results, relying on different optimization patterns. For the current issue I included only two compilers: Oracle HotSpot C1/C2 JIT Oracle HotSpot Graal JIT In the future, I might extend it to Eclipse OpenJ9, Azul…
Kotlin explicit inlining at megamorphic call-sites pays off in performance
Motivation In the current post, I would like to investigate how megamorphic call-sites are optimized in Kotlin as a result of explicit inlining (using the explicit inline modifier) and what is the performance gain out of it. The idea crossed my mind while I was reading the official kotlinlang.org website which mentions “inlining may cause the generated…
Chaining lambda optimizations in HotSpot VM and GraalVM
Motivation Current post tackles the problem of chaining (or linking) multiple lambda calls which seem to be differently optimized by the HotSpot Just In Time Compiler C2 (i.e. JIT C2) and GraalVM JIT Compiler. In this regard, I would propose to start detailing the problem, to run and check the benchmark results, to find…
Why Do We Need Architectural Diagrams?
According to the licensing policy, I would like to mention this article was originally published on InfoQ. Key Takeaways Creating and maintaining architectural diagrams to provide accurate and valuable content is not easy. Most of the time we create either too much, too little or irrelevant documentation because we fail to identify the proper beneficiaries and…
IT Designation Definitions
Software Architect is a person who draws the initial baby sketches, proves the prototype is working and then considers his job done. Developer can never estimate how much time it takes in practice to deliver the baby. Test Engineer is a person who thinks this is not the right baby. UX Researcher usually needs…
Passing this::method reference within a loop affects performance
Motivation The problem I would like address affects the performance in case this::method reference is passed to another method (especially within a long running loop), hence it is important to be aware and avoid this situation. The problem This arises when a lambda or a method reference which captures this reference (e.g. this::method) is passed to…