from time import time import socket import threading from hashtree import HashTree def timeF(f): start = time() f() end = time() print((end-start), "s") def fullRead(): block = True with open("/home/laman/ext2.img", mode="rb") as f: while block: block = f.read(HashTree.BLOCK_SIZE) def selectedRead(): with open("/home/laman/blocks.txt") as f: blocks = [int(x) for x in f] with open("/home/laman/ext2.img", mode="rb") as f: i1 = -1 for i2 in blocks: if i1+1!=i2: f.seek(i2*HashTree.BLOCK_SIZE) block = f.read(HashTree.BLOCK_SIZE) i1 = i2 def lessSelectedRead(): with open("/home/laman/blocks.txt") as f: blocks = [int(x) for x in f] with open("/home/laman/ext2.img", mode="rb") as f: i1 = -1 for i2 in blocks: if i2<=i1+8: block = f.read(HashTree.BLOCK_SIZE*(i2-i1)) else: f.seek(i2*HashTree.BLOCK_SIZE) block = f.read(HashTree.BLOCK_SIZE) i1 = i2 def shortSockets(): def _server(): serverSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serverSock.bind(("", 12329)) serverSock.listen(1) for i in range(10000): sock, address = serverSock.accept() with sock.makefile(mode="rb") as fr, sock.makefile(mode="wb") as fw: fr.readline() sock.shutdown(socket.SHUT_RDWR) sock.close() serverSock.close() def _client(): for i in range(10000): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("127.0.0.1", 12329)) with sock.makefile(mode="rb") as fr, sock.makefile(mode="wb") as fw: fw.write(b"x"*4096+b"\n") fw.flush() sock.shutdown(socket.SHUT_RDWR) sock.close() s = threading.Thread(target=_server) s.start() c = threading.Thread(target=_client) c.start() s.join() c.join() def longSockets(): def _server(): serverSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serverSock.bind(("", 12330)) serverSock.listen(1) sock, address = serverSock.accept() with sock.makefile(mode="rb") as fr, sock.makefile(mode="wb") as fw: for i in range(10000): fr.readline() sock.shutdown(socket.SHUT_RDWR) sock.close() serverSock.close() def _client(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("127.0.0.1", 12330)) with sock.makefile(mode="rb") as fr, sock.makefile(mode="wb") as fw: for i in range(10000): fw.write(b"x"*4096+b"\n") fw.flush() sock.shutdown(socket.SHUT_RDWR) sock.close() s = threading.Thread(target=_server) s.start() c = threading.Thread(target=_client) c.start() s.join() c.join() # timeF(fullRead) # 85.40341448783875 s # timeF(selectedRead) # 6.774365186691284 s # timeF(lessSelectedRead) # 5.930811405181885 s # timeF(shortSockets) # 3.928339719772339 s # timeF(longSockets) # 0.15576839447021484 s