我编写了一个应用程序来累积数据(几 MB/秒,但每秒更新 10 次)并通过 javascript 在浏览器中显示当前进程。
问题是目前我将数据写入文件并使用 javascript 加载它,但这会使应用程序非常缓慢,人们提示他们的硬盘工作很多。
我很想使用一些标志,如“FILE_ATTRIBUTE_TEMPORARY”来告诉我的操作系统不要实际将文件写入磁盘,但 javascript 要求我先关闭文件句柄(否则 firefox 无法打开它)。因此它将在那时写入磁盘,从而消除了最初使用该标志的意义。
我考虑过使用 mysql 数据库之类的东西,但我真的想让它尽可能简单,而且我更喜欢一种不会强制用户设置一些 http 或 mysql 服务器的解决方案。
最佳答案
在您的独立 C++ 应用程序中包含一个网络服务器,并直接从内存中提供数据。
我认为这是避免您现在面临的 I/O 开销的唯一选择。在 JS 中没有 IPC、消息队列或类似东西的接口(interface)。 TCP(或 UDP,带有 websockets)似乎是避免磁盘 I/O 的唯一可能方法。另一种选择是用浏览器插件替换您的 JavaScript,该插件可以使用 native 代码访问操作系统的功能。
注意:在 UNIX 环境中,您可以在文件系统中创建一个 FIFO 套接字,这也可能(或可能不会)满足您的目的。不过,我认为 Windows 不支持这样的功能。
关于javascript - 浏览器的快速IPC方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352906/