我正在为 Go 中的 SQRL 客户端实现 EnScrypt。该函数需要运行,直到它使用了最少的 CPU 时间。我的 Python 代码如下所示:
def enscrypt_time(salt, password, seconds, n=9, r=256):
N = 1 << n
start = time.process_time()
end = start + seconds
data = acc = scrypt.hash(password, salt, N, r, 1, 32)
i = 1
while time.process_time() < end:
data = scrypt.hash(password, data, N, r, 1, 32)
acc = xor_bytes(acc, data)
i += 1
return i, time.process_time() - start, acc
process_time
除了函数之外,将其转换为 Go 非常简单。我不能使用time.Time
/Timer
因为它们测量挂钟时间(受系统上可能运行的所有其他内容的影响)。我需要实际使用的 CPU 时间,理想情况下是函数,或者至少是它运行的线程或进程。
Go 相当于process_time
什么?
https://docs.python.org/3/library/time.html#time.process_time