mirror of
https://github.com/ltcptgeneral/cs239-caching.git
synced 2025-10-22 12:09:20 +00:00
Compare commits
9 Commits
db002dbdd0
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
79dec3aec0 | ||
|
5e2ce2f442 | ||
|
44dd3592b0 | ||
|
dbaf99af9e | ||
|
db8c5a7130 | ||
|
e2d66d2b2a | ||
|
88be00d210 | ||
|
bb38d1eeb4 | ||
|
b865e3e168 |
99
app/cache/eviction_sieve.py
vendored
99
app/cache/eviction_sieve.py
vendored
@@ -11,45 +11,49 @@ class Node:
|
||||
class SieveCache(Cache):
|
||||
def __init__(self, limit: int):
|
||||
super().__init__(limit)
|
||||
self.limit = limit # Fix: Store limit properly
|
||||
self.limit = limit
|
||||
self.cache = {} # Hash map for O(1) access
|
||||
self.head = None
|
||||
self.tail = None
|
||||
self.hand = None
|
||||
self.hand = None # Pointer for eviction
|
||||
|
||||
def print_cache_state(self):
|
||||
#print("Current cache state:")
|
||||
node = self.head
|
||||
if not node:
|
||||
#print("Cache is empty.")
|
||||
return
|
||||
for _ in range(len(self.cache)):
|
||||
#print(f"Key: {node.key}, Value: {node.value}, Visited: {node.visited}")
|
||||
node = node.next
|
||||
def invalidate(self, key: str) -> bool:
|
||||
"""Removes a specific key from cache if it exists."""
|
||||
if key in self.cache:
|
||||
node = self.cache.pop(key)
|
||||
|
||||
if node == self.head:
|
||||
break
|
||||
self.head = node.next
|
||||
if node == self.tail:
|
||||
self.tail = node.prev
|
||||
if node.next:
|
||||
node.next.prev = node.prev
|
||||
if node.prev:
|
||||
node.prev.next = node.next
|
||||
|
||||
return True # Successfully invalidated
|
||||
|
||||
return False # Key not found
|
||||
|
||||
def get(self, key: str) -> str:
|
||||
if key in self.cache:
|
||||
node = self.cache[key]
|
||||
node.visited = True
|
||||
#self.print_cache_state()
|
||||
node.visited = True # Mark node as accessed
|
||||
return node.value
|
||||
self.print_cache_state()
|
||||
return None
|
||||
|
||||
|
||||
def put(self, key: str, val: str) -> bool:
|
||||
if key in self.cache:
|
||||
node = self.cache[key]
|
||||
node.value = val
|
||||
node.visited = True
|
||||
#self.print_cache_state()
|
||||
return False # No eviction needed
|
||||
|
||||
new_node = Node(key, val)
|
||||
if len(self.cache) >= self.limit:
|
||||
self.evict()
|
||||
|
||||
# Insert new node in circular doubly linked list
|
||||
if not self.head:
|
||||
self.head = self.tail = new_node
|
||||
new_node.next = new_node.prev = new_node
|
||||
@@ -62,54 +66,31 @@ class SieveCache(Cache):
|
||||
|
||||
self.cache[key] = new_node
|
||||
if not self.hand:
|
||||
self.hand = self.head
|
||||
#self.print_cache_state()
|
||||
self.hand = self.head # Initialize hand pointer
|
||||
return False
|
||||
|
||||
def invalidate(self, key: str) -> bool:
|
||||
if key in self.cache:
|
||||
node = self.cache.pop(key)
|
||||
if node == self.head:
|
||||
self.head = node.next
|
||||
if node == self.tail:
|
||||
self.tail = node.prev
|
||||
if node.next:
|
||||
node.next.prev = node.prev
|
||||
if node.prev:
|
||||
node.prev.next = node.next
|
||||
#self.print_cache_state()
|
||||
return True
|
||||
return False
|
||||
|
||||
def next_hand(self):
|
||||
self.hand = self.hand.next if self.hand.next else self.head
|
||||
|
||||
|
||||
def evict(self):
|
||||
if not self.hand:
|
||||
return # No elements to evict
|
||||
|
||||
# Find the first unvisited node to evict
|
||||
while self.hand.visited:
|
||||
self.hand.visited = False
|
||||
self.next_hand()
|
||||
self.hand.visited = False # Reset visited flag
|
||||
self.hand = self.hand.next # Move to next node
|
||||
|
||||
obj_to_evict = self.hand
|
||||
self.next_hand()
|
||||
|
||||
self.hand = self.hand.next # Move hand forward
|
||||
|
||||
# Remove from cache dictionary if exists
|
||||
if obj_to_evict.key in self.cache:
|
||||
del self.cache[obj_to_evict.key]
|
||||
|
||||
# Evict the node from linked list
|
||||
if obj_to_evict == self.head:
|
||||
self.head = obj_to_evict.next
|
||||
if obj_to_evict == self.tail:
|
||||
self.tail = obj_to_evict.prev
|
||||
if obj_to_evict.next:
|
||||
obj_to_evict.next.prev = obj_to_evict.prev
|
||||
if obj_to_evict.prev:
|
||||
obj_to_evict.prev.next = obj_to_evict.next
|
||||
|
||||
del self.cache[obj_to_evict.key]
|
||||
#self.print_cache_state()
|
||||
|
||||
# Basic API demo for future testing
|
||||
if __name__ == "__main__":
|
||||
cache = SeiveCache(3)
|
||||
cache.put("a", "1")
|
||||
cache.put("b", "2")
|
||||
cache.put("c", "3")
|
||||
cache.get("a")
|
||||
cache.put("d", "4") # Should evict "b"
|
||||
assert "b" not in cache.cache, f"Eviction failed, cache contents: {cache.cache.keys()}"
|
||||
print("SeiveCache eviction test passed.")
|
||||
obj_to_evict.prev.next = obj_to_evict.next
|
||||
obj_to_evict.next.prev = obj_to_evict.prev
|
||||
|
||||
|
@@ -39,10 +39,34 @@ average cache miss response time (ms): 12.493911461160938
|
||||
cache throughput (requests / s) : 102.16957445113012
|
||||
real throughput (requests / s) : 48.726267135940624
|
||||
|
||||
--- weighted_friend_readonly Results ---
|
||||
hits: 1275 misses: 8725 ratio: 0.1275
|
||||
average response time (ms) : 11.204515027999879
|
||||
average cache hit response time (ms) : 0.0013659982120289521
|
||||
average cache miss response time (ms): 12.841651419172313
|
||||
cache throughput (requests / s) : 89.249735263063
|
||||
real throughput (requests / s) : 80.8252530462673
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 634 misses: 9366 ratio: 0.0634
|
||||
average response time (ms) : 12.046342158317566
|
||||
average cache hit response time (ms) : 0.0014511944743737062
|
||||
average cache miss response time (ms): 12.861680709574943
|
||||
cache throughput (requests / s) : 83.01275082988872
|
||||
real throughput (requests / s) : 75.60957264263929
|
||||
|
||||
--- weighted_friend_readonly 0.50 Results ---
|
||||
hits: 1069 misses: 8931 ratio: 0.1069
|
||||
average response time (ms) : 11.471518325805665
|
||||
average cache hit response time (ms) : 0.0013089603748803278
|
||||
average cache miss response time (ms): 12.844450115263228
|
||||
cache throughput (requests / s) : 87.1724188201363
|
||||
real throughput (requests / s) : 79.16835820770777
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 2255 misses: 7745 ratio: 0.2255
|
||||
average response time (ms) : 9.954997634887695
|
||||
average cache hit response time (ms) : 0.0012764645257175894
|
||||
average cache miss response time (ms): 12.853079137685146
|
||||
cache throughput (requests / s) : 100.4520580191259
|
||||
real throughput (requests / s) : 90.12648776249651
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 9992 misses: 8 ratio: 0.9992
|
||||
average response time (ms) : 0.011115074157714844
|
||||
average cache hit response time (ms) : 0.0008463239173492114
|
||||
average cache miss response time (ms): 12.83678412437439
|
||||
cache throughput (requests / s) : 89967.91076791077
|
||||
real throughput (requests / s) : 1050.3783705054095
|
@@ -39,10 +39,34 @@ average cache miss response time (ms): N/A
|
||||
cache throughput (requests / s) : 441.25553420116205
|
||||
real throughput (requests / s) : 77.73575713810418
|
||||
|
||||
--- weighted_friend_readonly Results ---
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 10000 misses: 0 ratio: 1.0
|
||||
average response time (ms) : 2.7157030582427977
|
||||
average cache hit response time (ms) : 2.7157030582427977
|
||||
average response time (ms) : 2.762448763847351
|
||||
average cache hit response time (ms) : 2.762448763847351
|
||||
average cache miss response time (ms): N/A
|
||||
cache throughput (requests / s) : 368.228771170237
|
||||
real throughput (requests / s) : 267.4051580450448
|
||||
cache throughput (requests / s) : 361.9976642054595
|
||||
real throughput (requests / s) : 264.15171149841484
|
||||
|
||||
--- weighted_friend_readonly 0.50 Results ---
|
||||
hits: 10000 misses: 0 ratio: 1.0
|
||||
average response time (ms) : 2.631771683692932
|
||||
average cache hit response time (ms) : 2.631771683692932
|
||||
average cache miss response time (ms): N/A
|
||||
cache throughput (requests / s) : 379.97217091293743
|
||||
real throughput (requests / s) : 273.36179952669863
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 10000 misses: 0 ratio: 1.0
|
||||
average response time (ms) : 2.3204839706420897
|
||||
average cache hit response time (ms) : 2.3204839706420897
|
||||
average cache miss response time (ms): N/A
|
||||
cache throughput (requests / s) : 430.94458425553995
|
||||
real throughput (requests / s) : 297.5298540772206
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 10000 misses: 0 ratio: 1.0
|
||||
average response time (ms) : 0.007048773765563965
|
||||
average cache hit response time (ms) : 0.007048773765563965
|
||||
average cache miss response time (ms): N/A
|
||||
cache throughput (requests / s) : 141868.64740721197
|
||||
real throughput (requests / s) : 1066.3182833103006
|
@@ -39,10 +39,34 @@ average cache miss response time (ms): 12.357432702008415
|
||||
cache throughput (requests / s) : 80.92295739045157
|
||||
real throughput (requests / s) : 43.34797667618127
|
||||
|
||||
--- weighted_friend_readonly Results ---
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 0 misses: 10000 ratio: 0.0
|
||||
average response time (ms) : 12.757544946670532
|
||||
average response time (ms) : 12.735849499702454
|
||||
average cache hit response time (ms) : N/A
|
||||
average cache miss response time (ms): 12.757544946670532
|
||||
cache throughput (requests / s) : 78.38498740786174
|
||||
real throughput (requests / s) : 71.68974303163175
|
||||
average cache miss response time (ms): 12.735849499702454
|
||||
cache throughput (requests / s) : 78.51851578674534
|
||||
real throughput (requests / s) : 71.97159807797185
|
||||
|
||||
--- weighted_friend_readonly 0.50 Results ---
|
||||
hits: 0 misses: 10000 ratio: 0.0
|
||||
average response time (ms) : 12.631608128547668
|
||||
average cache hit response time (ms) : N/A
|
||||
average cache miss response time (ms): 12.631608128547668
|
||||
cache throughput (requests / s) : 79.16648377810118
|
||||
real throughput (requests / s) : 72.52127479757786
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 0 misses: 10000 ratio: 0.0
|
||||
average response time (ms) : 12.301788067817688
|
||||
average cache hit response time (ms) : N/A
|
||||
average cache miss response time (ms): 12.301788067817688
|
||||
cache throughput (requests / s) : 81.28899591564806
|
||||
real throughput (requests / s) : 74.36930521285352
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 0 misses: 10000 ratio: 0.0
|
||||
average response time (ms) : 10.0695650100708
|
||||
average cache hit response time (ms) : N/A
|
||||
average cache miss response time (ms): 10.0695650100708
|
||||
cache throughput (requests / s) : 99.3091557579575
|
||||
real throughput (requests / s) : 89.69346607705592
|
@@ -39,10 +39,34 @@ average cache miss response time (ms): 12.47343186892525
|
||||
cache throughput (requests / s) : 101.78468675708436
|
||||
real throughput (requests / s) : 48.92688928507726
|
||||
|
||||
--- weighted_friend_readonly Results ---
|
||||
hits: 2838 misses: 7162 ratio: 0.2838
|
||||
average response time (ms) : 9.23909306526184
|
||||
average cache hit response time (ms) : 0.0012533357229091652
|
||||
average cache miss response time (ms): 12.899661223937
|
||||
cache throughput (requests / s) : 108.23573189882784
|
||||
real throughput (requests / s) : 96.54757454253809
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 1609 misses: 8391 ratio: 0.1609
|
||||
average response time (ms) : 10.815512228012086
|
||||
average cache hit response time (ms) : 0.0012467706181233976
|
||||
average cache miss response time (ms): 12.889180815897543
|
||||
cache throughput (requests / s) : 92.45979098521182
|
||||
real throughput (requests / s) : 83.71821192504922
|
||||
|
||||
--- weighted_friend_readonly 0.50 Results ---
|
||||
hits: 2792 misses: 7208 ratio: 0.2792
|
||||
average response time (ms) : 9.297505378723145
|
||||
average cache hit response time (ms) : 0.0012284705153850566
|
||||
average cache miss response time (ms): 12.89839399244624
|
||||
cache throughput (requests / s) : 107.55573234606003
|
||||
real throughput (requests / s) : 96.20708400138871
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 4381 misses: 5619 ratio: 0.4381
|
||||
average response time (ms) : 7.246287417411804
|
||||
average cache hit response time (ms) : 0.0011703244792465423
|
||||
average cache miss response time (ms): 12.89513204886536
|
||||
cache throughput (requests / s) : 138.00170244381164
|
||||
real throughput (requests / s) : 120.23923821573455
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 9997 misses: 3 ratio: 0.9997
|
||||
average response time (ms) : 0.004515457153320313
|
||||
average cache hit response time (ms) : 0.0006464036378882415
|
||||
average cache miss response time (ms): 12.897491455078125
|
||||
cache throughput (requests / s) : 221461.51896595422
|
||||
real throughput (requests / s) : 1070.4467798603782
|
@@ -39,10 +39,34 @@ average cache miss response time (ms): 12.488399400919109
|
||||
cache throughput (requests / s) : 277.7341979526512
|
||||
real throughput (requests / s) : 60.02808337161936
|
||||
|
||||
--- weighted_friend_readonly Results ---
|
||||
hits: 1275 misses: 8725 ratio: 0.1275
|
||||
average response time (ms) : 11.231861686706543
|
||||
average cache hit response time (ms) : 0.0015234479717179841
|
||||
average cache miss response time (ms): 12.872971286063208
|
||||
cache throughput (requests / s) : 89.03243539613284
|
||||
real throughput (requests / s) : 80.69348254832964
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 635 misses: 9365 ratio: 0.0635
|
||||
average response time (ms) : 12.026190519332886
|
||||
average cache hit response time (ms) : 0.0014263813889871433
|
||||
average cache miss response time (ms): 12.841537580474837
|
||||
cache throughput (requests / s) : 83.15185082029382
|
||||
real throughput (requests / s) : 75.84771942953694
|
||||
|
||||
--- weighted_friend_readonly 0.50 Results ---
|
||||
hits: 1072 misses: 8928 ratio: 0.1072
|
||||
average response time (ms) : 11.465663266181945
|
||||
average cache hit response time (ms) : 0.001328649805552924
|
||||
average cache miss response time (ms): 12.842205236248645
|
||||
cache throughput (requests / s) : 87.21693431809628
|
||||
real throughput (requests / s) : 79.27228928100207
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 2253 misses: 7747 ratio: 0.2253
|
||||
average response time (ms) : 9.959305834770202
|
||||
average cache hit response time (ms) : 0.0012218290786980208
|
||||
average cache miss response time (ms): 12.855338268592709
|
||||
cache throughput (requests / s) : 100.40860443393278
|
||||
real throughput (requests / s) : 90.2328882960655
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 9992 misses: 8 ratio: 0.9992
|
||||
average response time (ms) : 0.01112067699432373
|
||||
average cache hit response time (ms) : 0.0008874601894039646
|
||||
average cache miss response time (ms): 12.792408466339111
|
||||
cache throughput (requests / s) : 89922.582996559
|
||||
real throughput (requests / s) : 1052.9166753169109
|
71
tests/results_sieve
Normal file
71
tests/results_sieve
Normal file
@@ -0,0 +1,71 @@
|
||||
--- random_read Results ---
|
||||
hits: 493 misses: 9507 ratio: 0.0493
|
||||
average response time (ms) : 14.870552372932433
|
||||
average cache hit response time (ms) : 0.0013246013958604051
|
||||
average cache miss response time (ms): 15.64161888091261
|
||||
cache throughput (requests / s) : 67.24699761793734
|
||||
real throughput (requests / s) : 59.162448469313915
|
||||
|
||||
--- read_heavy Results ---
|
||||
hits: 431 misses: 7594 ratio: 0.05370716510903427
|
||||
average response time (ms) : 13.949467875875788
|
||||
average cache hit response time (ms) : 0.0010416291982557823
|
||||
average cache miss response time (ms): 14.74111545453236
|
||||
cache throughput (requests / s) : 71.68732233359239
|
||||
real throughput (requests / s) : 55.342634534026395
|
||||
|
||||
--- write_heavy Results ---
|
||||
hits: 106 misses: 1912 ratio: 0.05252725470763132
|
||||
average response time (ms) : 13.415291122686048
|
||||
average cache hit response time (ms) : 0.0009986589539725825
|
||||
average cache miss response time (ms): 14.15897051659588
|
||||
cache throughput (requests / s) : 74.54180389040839
|
||||
real throughput (requests / s) : 24.099083879788104
|
||||
|
||||
--- frequent_users Results ---
|
||||
hits: 7084 misses: 2916 ratio: 0.7084
|
||||
average response time (ms) : 4.243493890762329
|
||||
average cache hit response time (ms) : 0.0009342211912339316
|
||||
average cache miss response time (ms): 14.550178629871258
|
||||
cache throughput (requests / s) : 235.65486972348472
|
||||
real throughput (requests / s) : 168.06057547599738
|
||||
|
||||
--- frequent_after_write Results ---
|
||||
hits: 1008 misses: 3922 ratio: 0.20446247464503042
|
||||
average response time (ms) : 11.290647437074364
|
||||
average cache hit response time (ms) : 0.0008995097780984545
|
||||
average cache miss response time (ms): 14.19224506856713
|
||||
cache throughput (requests / s) : 88.56888017921497
|
||||
real throughput (requests / s) : 49.823185354533955
|
||||
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 723 misses: 9277 ratio: 0.0723
|
||||
average response time (ms) : 13.950133323669434
|
||||
average cache hit response time (ms) : 0.001212208432610434
|
||||
average cache miss response time (ms): 15.037237987495695
|
||||
cache throughput (requests / s) : 71.68390271247678
|
||||
real throughput (requests / s) : 62.85067778546538
|
||||
|
||||
--- weighted_friend_readonly 0.5 Results ---
|
||||
hits: 1211 misses: 8789 ratio: 0.1211
|
||||
average response time (ms) : 13.146774506568908
|
||||
average cache hit response time (ms) : 0.001021990787874658
|
||||
average cache miss response time (ms): 14.958073436664577
|
||||
cache throughput (requests / s) : 76.06428477953591
|
||||
real throughput (requests / s) : 66.63640929923034
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 2297 misses: 7703 ratio: 0.2297
|
||||
average response time (ms) : 11.466057205200196
|
||||
average cache hit response time (ms) : 0.0009958153451895475
|
||||
average cache miss response time (ms): 14.884887013391413
|
||||
cache throughput (requests / s) : 87.21393780823547
|
||||
real throughput (requests / s) : 75.28993183954742
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 9999 misses: 1 ratio: 0.9999
|
||||
average response time (ms) : 0.0020474910736083983
|
||||
average cache hit response time (ms) : 0.0007939655812505079
|
||||
average cache miss response time (ms): 12.536048889160156
|
||||
cache throughput (requests / s) : 488402.6176669228
|
||||
real throughput (requests / s) : 790.3142309599609
|
@@ -39,10 +39,34 @@ average cache miss response time (ms): 12.596626629622769
|
||||
cache throughput (requests / s) : 107.27478709180934
|
||||
real throughput (requests / s) : 49.79781897651969
|
||||
|
||||
--- weighted_friend_readonly Results ---
|
||||
hits: 4471 misses: 5529 ratio: 0.4471
|
||||
average response time (ms) : 7.232451653480529
|
||||
average cache hit response time (ms) : 0.0870680014470151
|
||||
average cache miss response time (ms): 13.01053273654109
|
||||
cache throughput (requests / s) : 138.26570130182094
|
||||
real throughput (requests / s) : 120.26334295113243
|
||||
--- weighted_friend_readonly 0.25 Results ---
|
||||
hits: 2163 misses: 7837 ratio: 0.2163
|
||||
average response time (ms) : 10.187475109100342
|
||||
average cache hit response time (ms) : 0.08817761792003474
|
||||
average cache miss response time (ms): 12.974865752640344
|
||||
cache throughput (requests / s) : 98.15974903405778
|
||||
real throughput (requests / s) : 88.35527295489469
|
||||
|
||||
--- weighted_friend_readonly 0.50 Results ---
|
||||
hits: 2766 misses: 7234 ratio: 0.2766
|
||||
average response time (ms) : 9.404127931594848
|
||||
average cache hit response time (ms) : 0.07571936170863484
|
||||
average cache miss response time (ms): 12.97094823907415
|
||||
cache throughput (requests / s) : 106.33628203209798
|
||||
real throughput (requests / s) : 95.07378087157565
|
||||
|
||||
--- weighted_friend_readonly 0.75 Results ---
|
||||
hits: 4087 misses: 5913 ratio: 0.4087
|
||||
average response time (ms) : 7.68894898891449
|
||||
average cache hit response time (ms) : 0.05545212465887814
|
||||
average cache miss response time (ms): 12.965137333952995
|
||||
cache throughput (requests / s) : 130.05678688228338
|
||||
real throughput (requests / s) : 114.06672701630119
|
||||
|
||||
--- weighted_friend_readonly 1 Results ---
|
||||
hits: 9992 misses: 8 ratio: 0.9992
|
||||
average response time (ms) : 0.011892271041870118
|
||||
average cache hit response time (ms) : 0.0006238444506215324
|
||||
average cache miss response time (ms): 14.086157083511353
|
||||
cache throughput (requests / s) : 84088.22810035326
|
||||
real throughput (requests / s) : 1066.9048383247582
|
@@ -9,7 +9,7 @@ from utils import print_report
|
||||
|
||||
baseurl = "http://localhost:8000"
|
||||
|
||||
chance_of_selecting_friend = 0.7
|
||||
chance_of_selecting_friend = 1
|
||||
|
||||
user_friends = json.loads(requests.get(baseurl + "/users_and_friends").content)
|
||||
user_ids = json.loads(requests.get(baseurl + "/users").content)["ids"]
|
||||
@@ -32,6 +32,7 @@ hits = []
|
||||
|
||||
start = time.time()
|
||||
curr_user = generate_random()
|
||||
last_user = curr_user
|
||||
for i in tqdm(range(10000)):
|
||||
url = baseurl + "/user/" + curr_user
|
||||
response = requests.get(url)
|
||||
@@ -39,9 +40,10 @@ for i in tqdm(range(10000)):
|
||||
times.append(content["time_ms"])
|
||||
hits.append(content["source"] == "cache")
|
||||
if fetch_friend(chance_of_selecting_friend):
|
||||
curr_user = generate_random_friend(curr_user)
|
||||
curr_user = generate_random_friend(last_user)
|
||||
else:
|
||||
curr_user = generate_random()
|
||||
last_user = curr_user
|
||||
end = time.time()
|
||||
|
||||
print_report(hits, times, end - start)
|
Reference in New Issue
Block a user