rewrite
FlameGraph
rewrite | FlameGraph | |
---|---|---|
24 | 53 | |
1,853 | 16,438 | |
5.0% | - | |
9.9 | 4.5 | |
2 days ago | 17 days ago | |
Java | Perl | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rewrite
- FLaNK Weekly 31 December 2023
- OpenRewrite – Automated mass refactoring of source code
-
AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
If you're into this sort of thing, there's OpenRewrite[1] for the Java ecosystem.
[1] https://docs.openrewrite.org/
-
What's New in Spring Framework 6.1
> Spring has gotten so bloated.
I'd call Spring feature-rich than bloated. You can always shed weight that you don't want to carry.
> Plus there's multiple ways of doing the same thing. e.g. JPA, spring-data.
That's because there are different ways to solve a problem. Someone may want an ORM-based approach to connect to the database; they can choose spring-data-jpa. Someone may want to use JDBC with a light abstraction on top of it; they can choose spring-data-jdbc. It's all about choices and right tradeoffs and Spring offers plenty of them.
> they don't provide easy upgrade paths between majors versions
That's not my experience. I've been happily upgrading 2.x.x versions and plan to upgrade to 3.2.x when it is ready. But depending on the codebase, I admit it can be painful. Projects like OpenRewrite[1] might help here.
> and they stop updating vulnerabilities on older major versions.
This is not news. They want you to pay for extended support if you need it.
> No docs on migration.
They do maintain migration docs on GitHub wiki which are a lot more detailed than their blog posts on migration. Here's the latest one to upgrade from Spring Boot 2 to 3: https://github.com/spring-projects/spring-boot/wiki/Spring-B...
[1]: https://github.com/openrewrite/rewrite
-
We already have Spring 2.1.3, Is SpringBoot 3 worth learning.
The issue you may run into when migrating from Spring Boot 2.x to 3.x is the JEE namespace renames. Migrating code from 8 to 17 in my experience hasn't been all that difficult. In most projects, there are no changes to make. However, with the namespace change, you'll probably have to do some planning and testing. If you are migrating a lot of projects, check out Open Rewrite, it may help automate a lot of these upgrades (for both 8 to 17 and Spring Boot versions).
-
Why wouldn't somebody change their version?
Couldn't OpenRewrite (https://docs.openrewrite.org) do a big part of this manual work?
-
Any ideas on how to automate upgrade of legacy Spring Framework/Spring Boot repositories?
Openrewrite would probably be a big help, see https://docs.openrewrite.org
-
what is your favorite programming trick/tool that not many People know about?
In a similar vein there is OpenRewrite which is an open-source project that works in a similar way. It also has a lot of great refactorings already built in, like doing all the grunt work for migrating to JUnit 5, or replacing string concatenation in SLF4J log calls with parameterized formatting.
-
Refactoring giant codebase
seems a case for https://docs.openrewrite.org/
-
What are your thoughts on Spring in 2023?
https://github.com/openrewrite/rewrite might help
FlameGraph
-
JVM Profiling in Action
We'll use async-profiler and flame graphs for profiling. To simplify the process, we'll run the code using JBang.
-
Memray – A Memory Profiler for Python
And flame graphs excel and this kind of thing
https://www.brendangregg.com/flamegraphs.html
-
All my favorite tracing tools: eBPF, QEMU, Perfetto, new ones I built and more
which can output in a format understood by Brendan Gregg's flame frames (https://www.brendangregg.com/flamegraphs.html)
But that's not quite the kind of tracing you're talking about. We also built a printf-style interface to our recording files, which seems closer:
-
Recap of Werner Vogels' Keynote at re:Invent 2023
Strategies included discontinuing or resizing underutilized services, transitioning to more cost-effective solutions, reducing the current resources to the amount of resources that we need for our application, and conducting detailed analyses of computing resource utilization through tools like flamegraphs. This detailed scrutiny helped identify and rectify significant cost-driving areas, such as garbage collection and application configurations.
-
Pinpoint performance regressions with CI-Integrated differential profiling
Flame Graphs by Brendan Gregg
-
Flameshow: A Terminal Flamegraph Viewer
Historically brendangregg's since AIUI he basically invented flamegraphs
https://www.brendangregg.com/flamegraphs.html
So if you can make your tool eat whatever https://github.com/brendangregg/FlameGraph is fed with you're going to support a lot of existing tooling across OSes and languages.
-
Introducing Flame graphs: It’s getting hot in here
“Flame graphs are a visualization of hierarchical data, created to visualize stack traces of profiled software so that the most frequent code-paths to be identified quickly and accurately.”
-
Using SVG to create simple sparkline charts
SVGs are amazing for interactive visualisation too. Like Flamegraphs: https://www.brendangregg.com/flamegraphs.html
-
Good example of using flame graphs to speed up java code (50x improvement)
This may be a good example of the application of a flame graph but it is not a good demonstration of flame graphs; the graph is nearly incidental. The source has an actual explanation.
-
Intro to PostGraphile V5 (Part 1): Replacing the Foundations
A profiling flame graph from Graphile Crystal (a precursor to Grafast) using GraphQL.js' executor (each tick is 1ms, total: 29ms). As we removed more and more responsibilities from GraphQL.js, we ended up only using it for output. Replacing this final responsibility with a custom implementation in Graphile Crystal itself, we reduced execution time for this query down to 15.5ms (effectively removing the majority of the yellow portion of the flame graph).
What are some alternatives?
JavaParser - Java 1-18 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.
hotspot - The Linux perf GUI for performance analysis.
gradle-lint-plugin - A pluggable and configurable linter tool for identifying and reporting on patterns of misuse or deprecations in Gradle scripts.
benchmark - A microbenchmark support library
grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.
tracing-bunyan-formatter - A Layer implementation for tokio-rs/tracing providing Bunyan formatting for events and spans.
cl-cuda - Cl-cuda is a library to use NVIDIA CUDA in Common Lisp programs.
HeatMap - Heat map generation tools
aws-ip-ranges - Tracking the history and size of AWS's ip-ranges.json file
node-clinic - Clinic.js diagnoses your Node.js performance issues
spring-cloud-dataflow - A microservices-based Streaming and Batch data processing in Cloud Foundry and Kubernetes
pmu-tools - Intel PMU profiling tools