ray
FrameworkBenchmarks
Our great sponsors
ray | FrameworkBenchmarks | |
---|---|---|
14 | 321 | |
481 | 6,863 | |
2.7% | 1.1% | |
7.5 | 9.8 | |
16 days ago | 5 days ago | |
PHP | Java | |
MIT License | GNU General Public License v3.0 or later |
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.
ray
-
How do I get xDebug to chill on remote?
Similar but not free: https://myray.app
- I hate PHP development
- What’s your typical list of paid software and services you use as a Laravel developer?
-
Using `dd` and `dump` in any PHP file on your system
Here is link number 1 - Previous text "Ray"
I hope installing spatie/global-ray (and Ray itself) will be a more pleasant experience.
-
ray VS xr - a user suggested alternative
2 projects | 26 Jan 2022
-
Announcing x-ray
I'm proud to announce the initial release of the spatie/x-ray package for Ray. The x-ray package provides a command-line utility that finds and displays all calls to ray(), rd(), and other functions from the spatie/ray family of packages. Currently, it only supports PHP projects.
- Debugging php while working on WP themes
-
What made you decide to be a PHP developer vs other languages?
Seems to me you just may have stumbled on a not-ideal PHP gig. The entire Laravel ecosystem is pretty awesome, there are a lot better tools for debugging than xdebug (https://myray.app/), and honestly, the amount of horrific spaghetti JS I've had to navigate is in multiple times worse, and in bigger amounts than any PHP related spaghetti I've had to deal with. But I do agree that for a newcomer it's hard to find good PHP products and tools since the information is so saturated on the internet, the only way you really find good quality things is by following the top guys on Twitter or so.
-
Icecream: Never use print() to debug again in Python
I am the same, it's the most easy. Very interesting is that in the laravel php world currently an interesting product is gaining momentum: Ray (https://myray.app/)
So basically it's dump with a lot of neat extras and instead of looking at the console of the script, or the website you are printing on you push this to a little desktop application, from every of your languages you are using. Something like log collection for everything on your desktop.
FrameworkBenchmarks
-
Is rust overkill for most back-end apps that could be done quickly by NodeJS or PHP?
Their GitHub wiki explaining the benchmark problems: https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview
-
Python-based compiler achieves orders-of-magnitude speedups
Well, perhaps not 100x in rps, but 10x sure:
Overall top performing frameworks (JS, Java, and Rust) at 650K rps. That's 7x.
Top Python based framework: 86K rps.
A very popular Python framework (flask): 2K rps. That's 325 times worse to the best.
And that's the "single DB query" benchmark: https://www.techempower.com/benchmarks/#section=data-r21&tes...
https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Proj...
-
RJIT a New JIT for Ruby
11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz, WSL 2.
A better benchmark https://www.techempower.com/benchmarks/#section=data-r21&tes...
-
Show HN: Up to 100x Faster FastAPI with simdjson and io_uring on Linux 5.19
How large? Also I'm not sure the gRPC C++ server implementations you've tested are the fastest. If you're comparing to FastAPI (which is more of an HTTP server framework) then you should also compare to what is at the top of https://www.techempower.com/benchmarks/#section=data-r21.
-
You don't need a build step
> And as someone who has worked on both, I can tell you that the container ecosystem is way better and way more deterministic. `Dockerfile` from 10 years back would work today as well. Any non-trivial package.json written even a few years ago would have half the packages deprecated in non-backward compatible way!
As I wrote elsewhere, Dockerfiles are not deterministic. The build artifacts that they produce are deterministic, but that would be comparing a build artifact to a build system.
> There is another similar ecosystem of mobile apps. That's also way superior in terms of the developer experience.
Mobile app users have different performance expectations. No one bats an eye if a mobile app takes several minutes to download/update, but a website that does so would be considered an atrocity.
> And that's not what I am objecting to. My concern is that the core JS specification is so barebones that it fragments right from the start.
JS is actually really well specified by ECMA. There are so many languages where the formal specification is "whatever the most popular compiler outputs".
> You make different choices and soon every single JS project looks drastically different from every other project.
The same could be said of any other moderately complex project written in a different language. Look at the Techempower benchmarks for Java, and tell me those projects all look identical [2].
> 1. There isn't a standard project format 2. There isn't a single framework that's backward compatible for 5+ years. 3. There isn't even an agreeement on the right build tools (npm vs yarn vs pnpm...) 4. There isn't an agreement on how to do multi-threaded async work
A lot of the complexity you're describing stems from running in the browser. A server-side js project that returns plain html with a standard templating language is remarkably stable. Express has been on version 4.x.x for literally 9 years [3]. Package.json is supported by yarn, npm, and pnpm. As long as you have a valid lock file and install dependencies using npm ci, you really shouldn't have too many issues running most js projects. I'm not sure what issues you've had with multi-threaded async. The standard for multi-threading in js is web workers (which are called worker threads in node). The js ecosystem is not like Scala or Rust, where's there's tokio and akka. JS uses promises for concurrency, and workers for parallelism.
[1] https://news.ycombinator.com/item?id=35002815
[2]https://github.com/TechEmpower/FrameworkBenchmarks/tree/9844...
-
Stack Overflow is a cacheless, 9-server on-prem monolith
Not to take anything away from Dapper (it's an excellent library), but it isn't really that much faster than EntityFramework anymore.
> EF Core 6.0 performance is now 70% faster on the industry-standard TechEmpower Fortunes benchmark, compared to 5.0.
> This is the full-stack perf improvement, including improvements in the benchmark code, the .NET runtime, etc. EF Core 6.0 itself is 31% faster executing queries.
> Heap allocations have been reduced by 43%.
> At the end of this iteration, the gap between Dapper and EF Core in the TechEmpower Fortunes benchmark narrowed from 55% to around a little under 5%.
https://devblogs.microsoft.com/dotnet/announcing-entity-fram...
Again, this isn't to take anything away from Dapper. It's a wonderful query library that lets you just write SQL and map your objects in such a simple manner. It's going to be something that a lot of people want. Historically, Entity Framework performance wasn't great and that may have motivated StackOverflow in the past. At this point, I don't think EF's performance is really an issue.
If you look at the TechEmpower Framework Benchmarks, you can see that the Dapper and EF performance is basically identical now: https://www.techempower.com/benchmarks/#section=data-r21&l=z.... One fortunes test is 0.8% faster for Dapper and the other is 6.6% faster. For multiple queries, one is 5.6% faster and the other is 3.8% faster. For single queries, one is 12.2% faster and the other 12.9% faster. So yes Dapper is faster, but there isn't a huge advantage anymore - not to the point that one would say StackOverflow has tuned their code to such an amazing point that they need substantially less hardware. If they swapped EF in, they probably wouldn't notice much of a difference in performance. In fact, in the real world where apps, the gap between them is probably going to end up being less.
If we look at some other benchmarks in the community, they tell a similar story: https://github.com/FransBouma/RawDataAccessBencher/blob/mast...
In some tests, EF actually edges past Dapper since it can compile queries in advance (which just means calling `EF.CompileQuery(myQuery)` and assigning that to a static variable that will get reused.
Again, none of this is to take away from Dapper. Dapper is a wonderful, simple library. In a world where there's so many painful database libraries, Dapper is great. It shows wonderful care in its design. Entity Framework is great too and performance isn't really an interesting distinction. I love being able to use both EF and Dapper and having such amazing database access options.
-
I Still ‘Lisp’ (and You Should Too)
Clojure is about 2.75x slower than Java, while Python is 5.59x slower.
The fastest composite Python "framework" is uvicorn at 17.9% of the fastest run in Java (officefloor). The fastest Clojure run is Aleph at 36.4%.
https://www.techempower.com/benchmarks/#section=data-r21&l=z...
About SBCL, I get conflicting results. The Benchmarks Game shows it roughly as fast as Java for many problems:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
But here it's significantly worse than the Clojure runs, likely due to the slow DB bindings (the other test types show it roughly in line with Clojure; though it uses a "Stripped"/unrealistic HTTP implementation):
https://www.techempower.com/benchmarks/#section=data-r21&l=z...
I am not sure which Lisp implementation is used; is it SBCL? Does this file speak to you?
https://github.com/TechEmpower/FrameworkBenchmarks/blob/73eb...
-
I love building a startup in Rust. I wouldn't pick it again
In a benchmark of how many fortune responses are returned by various web frameworks[0], nodejs returned 80k odd fortunes per second. The fastest c++ framework compared here returned 616k odd fortunes per second.
Assuming that my application scales by the same amount (big assumption, yes), I could cut AWS costs by 7.7 times (!!!) by using the C++ implementation.
I'm pretty sure that maintaining a C++ codebase is less than 7.7 times more expensive than Node, even if you throw in extra development time etc. This also ignores the decades worth of excellent tooling we've built up for C++ (static analyzers, fuzzers, etc).
At a startup, when building things fast matters more than costs, sure. I buy the argument for Node or Python or any other interpreted backend. But once you start to scale, things change after some threshold. Unless you're facebook[1].
[0]. https://www.techempower.com/benchmarks/#section=data-r21
[1]. https://developers.facebook.com/blog/post/2010/02/02/hiphop-...
-
De-Bloated Windows 11 Build Runs on 2GB of RAM
Not serving, but handling 2100k requests. Your skepticism is rightly placed, as the HTTP protocol is yet an example of an inefficient protocol that nonetheless is used as the primary protocol on the internet. Some webservers[1] can serve millions of requests pr. second, but I'd never use HTTP in code where efficiency is key.
No, I'm talking about handling requests. In this particular case, requests (32 to 64 bytes) were flowing through several services (on the same computer). I replaced the processing chain with a single application to remove the overhead of serialization between processes. Requests were filtered early in the pipeline, which made a ~55% reduction in the work needed.
Requests were then batche into succinct data structures and processed via SIMD. Output used to be JSON, but I instead wrote a custom memory allocator and just memcpy the entire blob on to the wire.
Before: No pre-filtering, off-the-shelf databases (PSQL), queue system for I/O, named pipes and TCP/IP for local data transfer. Lots of concurrency issues, thread starvation and I/O bound work.
After: Agnessive pre-filtering, succinct data structures for cache coherence, no serialization overhead, SIMD processing. Can saturate a 32 core CPU with almost no overhead.
[1] https://www.techempower.com/benchmarks/#section=data-r13&hw=...
- Looking back on framework benchmark (updates = db writes) what can make Go improved back to be top 10?
What are some alternatives?
zio-http - A scala library to write Http apps.
django-ninja - 💨 Fast, Async-ready, Openapi, type hints based framework for building APIs
ray-proxy - a proxy for the Ray app to allow debugging of payloads
LiteNetLib - Lite reliable UDP library for Mono and .NET
C++ REST SDK - The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
drogon - Drogon: A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows [Moved to: https://github.com/drogonframework/drogon]
SQLBoiler - Generate a Go ORM tailored to your database schema.
Laravel - The Laravel Framework.
CoreWCF - Main repository for the Core WCF project
fastapi - FastAPI framework, high performance, easy to learn, fast to code, ready for production
Spiral Framework - High-Performance PHP Framework
bjoern - A screamingly fast Python 2/3 WSGI server written in C.