Based on all these updates, I'm taking the broader question to be "How many items can I stuff in an ECS game system before it slows down?"
I've worked on systems with well over five thousand articulated models on screen with fully simulated game objects at once before the processing power started to bog down. I've been brought in on contract to help a project with under 200 static model on screen that could barely maintain 30 frames per second on mainstream hardware. And I've worked on about 20 projects that have ranged far between.
The choice to use an ECS game system has absolutely nothing to do with those performance numbers.
BEGIN TEACHING MODE:
The biggest determining factors in performance is how you use your time.
Steam Hardware Survey says about half of gamers today (46.91%) still have 2 physical cores, and they're about 2.4 GHz. So if you're targeting mainstream hardware, you get about five billion cycles per second if you use them all. Each cycle takes about 0.41 nanoseconds, but we'll call it a half nanosecond for easier math.
You lose a big chunk of that to the operating system and other programs. Let's call your share about 4 billion per second, or about 66 million processor cycles per frame. What you do with those cycles is up to you and your game.
Some tasks are extremely efficient, others are terribly inefficient. Some tasks are fast and others are slow. Some tasks can block processing until they are done, other tasks can be "fire-and-forget", scheduled for whenever is convenient for the processor. Sometimes even doing what appears to be exactly the same thing can in fact be radically different things that you didn't know about, giving very different performance numbers for things you didn't think about.
The most frequent performance factor, and usually the easiest to address, is the algorithm chosen to do a job.
There are algorithms that are extremely efficient and algorithms that are inefficient. As an example, when sorting a random collection of values the bubblesort algorithm is very easy to understand but will be slow. The quicksort algorithm is harder to understand but will typically be fast. And there are some more sorting routines out there like introsort that are quite a bit more difficult to implement correctly but can be faster still.
You can choose to use a compute-heavy algorithm when the program is run, or you can change the algorithm to use some data processing at build time in exchange for near-instant processing or precomputed values at runtime. Swap the algorithm to bring the time to nothing, or nearly so. For example, rather than computing all the lighting and shadowing for a scene continuously, an engine may "bake" all or most of the lighting and shadowing directly into the world.
You can often choose to switch between compute time and compute space, similar to that above. Precomputed values and lookup tables are quite common. In graphics systems it is fairly common to encode all the computing information into a single texture, then replace the compute algorithm with a texture coordinate for lookup. Textures for spherical harmonics are commonplace these days; even if artists don't know the math behind them many can tell you how "SH Maps" work and that they improve performance.
Sometimes it is clear to see places with multiply nested loops, places with exponential computational requirements, code that has known-slow algorithms with known-fast alternatives. And of course, the fastest work is the work that is never done.
So you may have an algorithm in place that has n^3 growth. With 5 items it may take 60 nanoseconds, and that's great. With 10 items it may take 500 nanoseconds, that's fine. With 100 items it takes 500,000 nanoseconds, and that is not fine. Swap out the algorithm with some that takes a bit more time per value but has linear performance and those times may become 180ns, 375ns, 3750ns, and all of those are great with a different algorithm.
Algorithm performance sometimes may be reviewed in the source, but other times they may require analysis tools and profiling.
After algorithm selection, one of the biggest performance factors in games is data locality. It has very little to do with ECS, although some ECS decisions can have a major impact on it.
Basic arithmetic from data already available to the CPU can be done quickly. Processor design allows multiple operations to take place at the same time in internal parallel processing ports, so a single basic arithmetic operation can take place in about one-third of a CPU cycle, or about 0.15ns per operation. If you are using SIMD operations and the CPU can schedule them on ports in parallel, it can take one-sixteenth of a CPU cycle per value, or about 0.03ns. Those are amazingly fast, and that is why so many programmers talk about ways to leverage SIMD operations, which you might have heard of under the name MMX, SSE, or similar.
But there aren't many registers and L1 cache lines on the processor, and reading from memory is slow. If the data is in L2 cache there is an overhead of about 7ns or about 20 cpu cycles. If the value is in main memory it takes about 100ns or about 240 CPU cycles.
Cache misses (needing to get something from farther away in memory) and cache eviction (not using what is already in the cache) can completely destroy a game's performance. Jumping around all over memory might not be a bad thing, what matters is cache performance. If you are jumping around all over memory but it is all on the chip's L1 cache it is amazingly fast, jump around on data in the L2 cache and performance drops by a factor of about 100. Jump around on data requiring loads from main memory and performance drops by a factor of about 10,000.
ECS systems tend to jump around frequently, but design of the systems can mean it is jumping all over in L2 cache or jumping all over in main memory. It is a fairly minor design change but it makes about a 10x performance difference.
Two systems that look exactly the same can differ by an order of magnitude in performance based on data locality. Even the same system can suddenly seem to switch gears from fast to slow when data locality changes. You cannot spot the differences in data locality performance by reading the source code alone.
Another major performance factor in games is how you move data around.
You need to move data between main memory and your CPU, between both of them to your graphics cards, to your sound cards, to your network cards, and to other systems. The system bus performance depends quite a lot on the hardware. Cheap motherboards and bad chipsets can move very little data at a time and has slow transfer rates. Quality motherboards and good chipsets can move tremendous amounts of data at a time with rapid transfer rates.
While you probably cannot control the hardware, if you know what you are doing you can coordinate how data moves around.
You can send data around from system to system all the time with no thought or regard for size or system effect. This is much like the highway system: sometimes you have near-vacant roads and can travel quickly, other times you'll have tons of cars saturating the road with all the vehicles sitting at a standstill. Your data will eventually get there, but the performance time will be unpredictable and sometimes terrible.
You can take steps to bundle transfers together and take simple steps to ensure systems don't block each other. This is much like freight trains: huge bundles with cars extending for one or two miles. There is some overhead, but they are efficient.
Or you can take more extreme methods to highly coordinate all your systems and ensure that every system is both properly bundled and carefully scheduled. This is like mixing the capacity of long freight trains with the speed of bullet trains: enormous throughput, low latency, and everything gets moved directly to the destination with maximum efficiency.
Like memory performance, you cannot spot the differences in bus usage performance by reading the source code alone.
There are many more, but those are normally the biggest impact.
These factors by themselves will account for the vast majority of the performance characteristics of an engine. A few minor differences in each of those things mean the difference between a game running at 10 frames per second or running at 100+ frames per second.