Current Test: Are Some Programming Languages Really Faster?
Programming languages are constantly described as fast, slow,
efficient or high-performance.
But does choosing a supposedly faster programming language
actually make an application faster when that application has
to communicate with a database?
That's what we're testing.
We are testing 13 programming languages using
controlled database workloads.
Each implementation is required to perform the same work and
return the correct result.
We're not trying to prove that one programming language is
universally the fastest.
We're testing a narrower claim:
When applications perform the same database work under
the same conditions, do languages commonly described as
faster actually produce faster results?
Five Different Databases
We're also testing the implementations against five different
database systems. That lets us see whether changing the
database changes the results or even changes which programming
language performs best.
PostgreSQL
Relational SQL database.
Cassandra
Distributed wide-column database.
CockroachDB
Distributed SQL database.
MariaDB
Relational SQL database.
MongoDB
Document-oriented database.
What Are We Measuring?
The initial comparison gives each implementation the same
limited computing resources so that every language begins
under comparable conditions.
Selected implementations are then tested again with
substantially more CPU resources to see what happens when
they're given room to scale.
We measure throughput, response times, errors and resource
usage. We also record where an implementation begins to fail
or becomes unstable as the workload increases.
The methodology and results will be published so the test can
be examined, criticized and repeated.
The Test Will Help Us Build This Website
This isn't just a benchmark we're publishing for other people.
The results will help determine how But Is It True? Lab itself
is built.
Right now, this website is intentionally simple.
The page you're viewing is currently built with only
HTML and CSS.
We haven't selected the final programming languages for the
backend, interactive portions of the frontend, APIs, search
engine, data processing or many of the other systems that will
eventually power the site.
We also haven't decided that one database should store
everything.
Instead of choosing technology because it's popular, because
someone says it's fast, or simply because it's what we already
know, we're testing the options first.
Performance won't be the only consideration.
We'll also look at resource usage, reliability, scalability,
development complexity, maintainability and how well each
technology fits the particular job we need it to perform.
We Probably Won't Choose Just One
We don't necessarily expect one programming language or one
database to power the entire platform.
In fact, we expect But Is It True? Lab will probably use a
polyglot architecture.
That means using multiple programming languages and multiple
database technologies, with each selected for the work it
performs best.
The best language for a high-performance search API may not
be the best choice for artificial intelligence, data analysis,
background processing or interactive website features.
The same applies to databases.
The best database for structured relationships may not be the
best database for storing enormous amounts of crawl data,
historical observations, search information or other types of
data the platform may eventually process.
A technology doesn't have to finish first overall to become
part of But Is It True? Lab.
If something proves particularly good at one type of work,
that may be exactly where we use it.
We're not choosing the winner and then designing a test
to justify the decision. We're running the tests first
and using the evidence to help design the platform.
We have predictions too.
But predictions aren't results.
We'll let the tests answer the question.