使用/dev/random的文件io花费的时间太长
file io with /dev/random takes too long
我想写一个程序,在linux上使用/dev/random
生成真正的随机数,但后来我发现它的运行时间有时很难接受。它的C版本始终运行得很快。
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char*argv[])
{
ifstream random("/dev/random", ios_base::in);
int t;
random.read(reinterpret_cast<char*>(&t), sizeof(t));
cout << t << endl;
random.close();
return 0;
}
运行时间的时间统计
$: time ./random
-1040810404
real 0m0.004s
user 0m0.000s
sys 0m0.000s
$: time ./random
-1298913761
real 0m4.119s
user 0m0.000s
sys 0m0.000s
您可能已经耗尽了熵池。创建(ok收获)熵是基于设备驱动程序,这些驱动程序对物理世界的质量进行采样,而这些质量大多是不可预测的。但是,如果这些设备不是很活跃,或者熵产生算法停滞,你从/dev/random
读取的数据也会停滞。
你能用/dev/urandom
吗?如果没有,你应该研究如何以更具确定性的方式产生更多的熵。
以下是一篇关于类似问题的文章中的一些建议:
- 让像AED这样的音频熵守护进程使用开放式麦克风收集数据中心的噪音,也许可以将其与像VED这样的网络摄像头噪音收集器结合使用。其他来源正在讨论"磁盘设备中空气湍流的密码随机性"。:)
- 使用熵收集精灵从用户空间程序的随机性中收集较弱的熵
相关文章:
- 从文本文件中读取时钟时间和事件时间并进行处理
- Levenshtein 两个文件的距离花费了太多时间
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 如何将消息时间戳写入日志文件?
- Chilkat SFTP 文件修改时间不与上传更新
- 如何在 Windows 上的 C++ 中根据文件的修改时间读取目录中的文件
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- C++-需要读取存储在文件(.txt)中的时间戳并正确检索
- 测量任何 Windows 可执行文件的内存使用情况和执行时间
- std::fstream 需要很长时间才能将大数据写入.csv文件中
- 如何减少编译时间:在包含未触及的头文件的情况下
- 当字节在文件上写入0时,是否可以保持写作时间稳定
- C++ 如何使用字符串中保存的文件路径创建带时间戳的目录
- 使用LTO静态链接的可执行文件(链接时间优化):如何使用以前构建的库进行制作
- 将时间戳添加到文本文件中的空行中
- 如何使用C 根据当前时间自动生成新的CSV文件
- 我可以让QT到概要文件插槽执行持续时间吗?
- 当该应用程序中加速文件的最后一个修改时间发生更改时,如何重新启动应用程序
- C++:读取.BMP文件时出现问题;文件结束时间早于预期
- 如何从一段时间开始打开和关闭文件