Files @ 5c80ca07f00c
Branch filter:

Location: Morevna/src/benchmark.py

Laman
reformatted whitespace with more respect for PEP-8
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