I have two queues, one is implemented using an array for storage and the other is implemented using a linked list.
I believe that the complexity of the enqueue and dequeue operations looks like this –
LinkedListQueue Enqueue – O(1)
LinkedListQueue Dequeue- O(1)
ArrayQueueEnqueue – O(1)
ArrayQueue Dequeue – O(n)
So I tested both queues by adding and removing strings from them. Here are the results I got, time taken is in milliseconds –

Does my Big Oh complexity analysis stack up with these results? The complexity of LLQueue Enqueue I have is O(1) but as you can see it ranges from 2ms for 1000 strings to 79ms for 100000 strings. Is that expected?
And I have ArrayQueue Dequeue marked down as O(n), do those results look like O(n)? There is a huge jump between 20000 and 50000 strings, but it only doubles in time when dequeuing 100000 strings instead of 50000. That seems a bit odd…
First, I am surprised that your Dequeue operation on ArrayQueue is so expensive. Are you shifting the entire queue contents on each dequeue? There is a much better approach – look up “circular queue” online.
Now, onto the measurements. The big-Oh complexity only tells a part of the story. When you start measuring the running times, you will see a variety of complex effects, such as the following:
Caches
It seems like your test enqueues a bunch of elements into a queue and then dequeues them. If the entire queue fits into an L1 cache on your processor, all memory operations will be fast.
If the size of the queue exceeds the L1 cache, then data will need to spill into L2 cache, which results in maybe a 2-3x slowdown. If the size of the queue exceeds the L2 cache, the data will have to go into the main memory and you’ll get another big drop in performance – say 5x.
Garbage collection
From the naming of your types, I would guess that you are using a language with garbage collection, like Java or C#. If that’s the case, then that implies that your program can pause at any time (not quite “any time”, but that’s not important now) and spend some time cleaning up memory.
Other effects
I would guess that the two effects I mentioned above are the ones you’d be most likely to run into in a scenario like yours, but there are many other complex behaviors in the compiler, the VM, the OS, and the hardware that make it hard to interpret performance measurements.
It can be a great learning experience – and also fun – trying to figure out why exactly your performance measurements came out a certain way, but it certainly not trivial.