1. A method, comprising: simulating a first-in-first-out (FIFO) cache having a first size, the simulation including: initializing a Bloom filter ring, Bloom filter ring including a plurality of Bloom filters arranged in a circular log, and two adjacent ones of the Bloom filters associated with a head pointer and a tail pointer, respectively; receiving a stream of cache accesses; for each of the cache accesses: determining whether the cache access is a read or write request; (a) if the cache access is a read request, determining whether an element requested by the cache access is a member of the Bloom filter ring; if the element requested by the cache access is a member of the Bloom filter ring, incrementing a count of a number of hits; (b) if the access is a write request, determining whether an element to be written is a member of the Bloom filter ring; if the element to be written is not a member the Bloom filter ring, inserting a hash of the element into the Bloom filter indicated by the head pointer; determining whether the Bloom filter indicated by the head pointer is filled to its capacity; and if the Bloom filter indicated by the head pointer is filled to its capacity, deleting membership of elements from the Bloom filter indicated by the tail pointer and advancing the head and tail pointers; and computing cache statistics including a cache hit percentage for the FIFO cache having the first size based on the count of the number of hits and a number of read requests.