]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed rate limited for high speed
authorYann Collet <cyan@fb.com>
Sat, 11 Aug 2018 00:39:00 +0000 (17:39 -0700)
committerYann Collet <cyan@fb.com>
Sat, 11 Aug 2018 00:39:00 +0000 (17:39 -0700)
tests/rateLimiter.py

index 559f2275aea6ccb944e98659cef3907c2421aff8..134ef8971aa1def9cc2ceac6377154820d37b648 100755 (executable)
@@ -1,4 +1,4 @@
-#! /usr/bin/env python3
+#!/usr/bin/env python3
 
 # ################################################################
 # Copyright (c) 2018-present, Facebook, Inc.
@@ -17,7 +17,9 @@
 import sys
 import time
 
-rate = float(sys.argv[1]) * 1024 * 1024
+MB = 1024 * 1024
+rate = float(sys.argv[1]) * MB
+rate *= 1.25   # compensation for excluding write time (experimentally determined)
 start = time.time()
 total_read = 0
 
@@ -25,9 +27,11 @@ buf = " "
 while len(buf):
   now = time.time()
   to_read = max(int(rate * (now - start) - total_read), 1)
-  buf = sys.stdin.read(to_read)
+  max_buf_size = 1 * MB
+  to_read = min(to_read, max_buf_size)
+  buf = sys.stdin.buffer.read(to_read)
   write_start = time.time()
-  sys.stdout.write(buf)
+  sys.stdout.buffer.write(buf)
   write_end = time.time()
-  start += write_end - write_start
+  start += write_end - write_start   # exclude write delay
   total_read += len(buf)