A fast, lightweight and minimalistic Wayland terminal emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

51 lines
1.3 KiB

#!/usr/bin/env -S python3 -u
import argparse
import fcntl
import os
import statistics
import struct
import sys
import termios
from datetime import datetime
def main():
parser = argparse.ArgumentParser()
parser.add_argument('files', type=argparse.FileType('rb'), nargs='+')
parser.add_argument('--iterations', type=int, default=20)
args = parser.parse_args()
lines, cols, height, width = struct.unpack(
'HHHH',
fcntl.ioctl(sys.stdout.fileno(),
termios.TIOCGWINSZ,
struct.pack('HHHH', 0, 0, 0, 0)))
times = {name: [] for name in [f.name for f in args.files]}
for f in args.files:
bench_bytes = f.read()
for i in range(args.iterations):
start = datetime.now()
sys.stdout.buffer.write(bench_bytes)
stop = datetime.now()
times[f.name].append((stop - start).total_seconds())
del bench_bytes
print('\033[J')
print(times)
print(f'cols={cols}, lines={lines}, width={width}px, height={height}px')
for f in args.files:
print(f'{os.path.basename(f.name)}: '
f'{statistics.mean(times[f.name]):.3f}s '
f'±{statistics.stdev(times[f.name]):.3f}')
if __name__ == '__main__':
sys.exit(main())