It's a shame the campaign of RA3 was boring. They got the theme and cutscenes right, but the campaign missions were rather slow, generic and forgettable.
It's the opposite of C&C3, which had a good campaign but the theme was a step back from the scifi of Tiberian Sun. Especially the GDI/NOD units were way less futuristic, and the alien ones were a bit too similar to each other in style. The cutscenes were also mostly boring compared to earlier games.
If I recall correctly, the expansion pack for C&C3 was much more interesting in these aspects, but the gameplay suffered.
The hash-based algorithm is only O(n) because the entry size has a limit. In a more general case, it would be something more like O(m(n * e)). Here n is the number of entries, e is the maximum entry size and m is a function describing how caching and other details affect the computation. With small enough data, the hash is very fast due to CPU caches, even if it takes more steps, as the time taken by a step is smaller. The article explains this topic in a less handwavey manner.
Also, memory access is constant time only to some upper limit allowed by the hardware, which requires significant changes to the implementation when the data does not fit the system memory. So, the hash algorithm will not stay O(n) once you go past the available memory.
The sorting algorithms do not suffer from these complexities quite as much, and similar approaches can be used with data sets that do not fit a single system's memory. The sorting-based algorithms will likely win in the galactically large cases.
Edit: Also, once the hash table would need to grow beyond what the hash function can describe (e.g. beyond 64 bit integers), you need to grow the function's data type. This is essentially a hidden log(n) factor, as the required length of the data type is log(n) of the maximum data size.
I encountered similar trouble with both Firefox and Chrome on Ubuntu.
Based on a quick Firefox performance report on the minified source code, most of the time seems to be spent in functionality looking like frame handling. There are some signs of time calculations.
One educated guess would be that something in frame time calculations goes off, possibly due to restricted time resolution to prevent timing related fingerprinting. This would cause next frame computation to start immediately instead of after the intended timeout.
Extracting text from DOCX is easy. Anything related to layout is non-trivial and extremely brittle.
To get the layout correct, you need to reverse engineer details down to Word's numerical accuracy so that content appears at the correct position in more complex cases. People like creating brittle documents where a pixel of difference can break the layout and cause content to misalign and appear on separate pages.
This will be a major problem for cases like the text saying "look at the above picture" but the picture was not anchored properly and floated to the next page due to rendering differences compared to a specific version of Word.
It's the opposite of C&C3, which had a good campaign but the theme was a step back from the scifi of Tiberian Sun. Especially the GDI/NOD units were way less futuristic, and the alien ones were a bit too similar to each other in style. The cutscenes were also mostly boring compared to earlier games.
If I recall correctly, the expansion pack for C&C3 was much more interesting in these aspects, but the gameplay suffered.