Why is my algorithm so slow?

I hope to explore Mathematica by using it for Advent of Code puzzles this year, so spoiler alert for anyone interested in solving https://adventofcode.com/2018/day/1 for themselves.

Part 2 of yesterday’s problem requires you to repeatedly iterate through a list of positive and negative integers, compute the running sum, and terminate when the sum repeats. Here is my code with reference data:

This algorithm produces the correct answer (14). When I run this algorithm against the real input ($ |\texttt{data}|=1029$ ) this algorithm computed the answer in 141207 iterations, which means $ 0\le|\texttt{day1frequencies}|<141207$ throughout the computation.

This algorithm took several minutes to complete. I wonder if {} creates a basic array with $ O(n)$ searches with MemberQ, but I do not know how to prove this. I notice that printing day1frequencies preserves insertion order.

I experimented with day1frequencies = Association[{}], hoping searches would occur in $ O(\log{n})$ or $ O(1)$ , but it didn’t seem any faster.