From 04038b7ca179d93b339e04974857f7fcfaf7403d Mon Sep 17 00:00:00 2001 From: Galina Pokitko Date: Thu, 13 Aug 2026 10:56:26 -0500 Subject: [PATCH 1/3] Updated vectvshash.png Added --- .../AlgorithmAnalysis/HashTableAnalysis.ptx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx b/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx index 08d32d92..e22d840a 100755 --- a/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx +++ b/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx @@ -173,7 +173,7 @@ for i in range(10000,1000001,20000): -

summarizes the results of running +

summarizes the results of running . You can see that the hash table is consistently faster. For the smallest vector size of 10,000 elements a hash table is 89.4 times faster than a vector. For the largest vector size of 990,000 @@ -186,16 +186,16 @@ for i in range(10000,1000001,20000): contains operation took 0.004 milliseconds and for the hash table size of 990,000 it also took 0.004 milliseconds.

-
- Comparing the contains operation for C++ vectors and Hash Tables - -

The primary take away is that the graph for vectors shows an almost linear climb from - 0 elements taking almost 0 time to 1,000,000 elements taking approximately 45 seconds. For hash - tables, the function is also linear, but shows almost 0 slope from 0 elements to 1,000,000 elements - in the hash table. This reflects the linear versus constant time growth of the two - functions.

- -
+
+ Comparing the contains operation for C++ vectors and Hash Tables + +

The primary take away is that the graph for vectors shows an almost linear climb from + 0 elements taking almost 0 time to 1,000,000 elements taking approximately 69 microseconds. For hash + tables, the function is also linear, but shows almost 0 slope from 0 elements to 1,000,000 elements + in the hash table, staying at approximately 2 to 3 nanoseconds throughout. This reflects the linear + versus constant time growth of the two functions.

+ +

Since C++ is an evolving language, there are always changes going on behind the scenes. The latest information on the performance of C++ From 9cd57764a5ce7b96942707f4dff1e9f436507577 Mon Sep 17 00:00:00 2001 From: Galina Pokitko Date: Fri, 14 Aug 2026 08:54:04 -0500 Subject: [PATCH 2/3] Attached missing PNG image --- .../Figures/AlgorithmAnalysis/vectvshash2.png | Bin 0 -> 56157 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pretext/Figures/AlgorithmAnalysis/vectvshash2.png diff --git a/pretext/Figures/AlgorithmAnalysis/vectvshash2.png b/pretext/Figures/AlgorithmAnalysis/vectvshash2.png new file mode 100644 index 0000000000000000000000000000000000000000..076b779f9c154a6b1a5d20cc00f9de40cc806e05 GIT binary patch literal 56157 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 Date: Fri, 14 Aug 2026 18:15:17 -0500 Subject: [PATCH 3/3] Fixed xml:id --- pretext/AlgorithmAnalysis/HashTableAnalysis.ptx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx b/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx index e22d840a..3d86287e 100755 --- a/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx +++ b/pretext/AlgorithmAnalysis/HashTableAnalysis.ptx @@ -173,7 +173,7 @@ for i in range(10000,1000001,20000): -

summarizes the results of running +

summarizes the results of running . You can see that the hash table is consistently faster. For the smallest vector size of 10,000 elements a hash table is 89.4 times faster than a vector. For the largest vector size of 990,000 @@ -186,7 +186,7 @@ for i in range(10000,1000001,20000): contains operation took 0.004 milliseconds and for the hash table size of 990,000 it also took 0.004 milliseconds.

-
+
Comparing the contains operation for C++ vectors and Hash Tables

The primary take away is that the graph for vectors shows an almost linear climb from