我在 C 编程并使用bash作为我的shell。目前我正在尝试优化我运行程序时。程序的一般要点是输入一些参数,读入数据文件,然后程序根据输入参数和文件中的数据运行一些计算。我经常通过仅更改每次运行的输入参数而不是文件中的数据来一次运行此代码100次。我使用shell脚本来xargs
使用各种参数的可执行文件。
printf "%s\n" {0..n} | xargs -P 8 -n 1 ./program
问题是我有一个非常大的数据文件需要大约1秒才能读入。这是在每次调用可执行文件时完成的,但是,读入的数据通常不会改变!因此,我相信通过以某种方式保存这些数据可以节省大量时间,以便可执行文件的其他调用可以使用已经读入的数据,而不是浪费时间读取数据本身。
我想也许可能有另一个程序读取数据,然后保护并将数据的地址发送到我当前的可执行文件。在可执行文件完全运行完毕后,会将其中继回新程序,然后新程序将释放数据。这可能吗?还是有另一种方式可以更好吗?
答案 0 :(得分:1)
您可以尝试将文件存储在共享内存中:/ dev / shm
Ex:ls>的/ dev / SHM / LS-输出
./ program<的/ dev / SHM / LS-输出
不确定这是否是您所寻找的,但我猜这条线上的内容可能会有所帮助。
答案 1 :(得分:0)
我不知道你的问题的答案,但如果你只能哄骗文件系统将文件保存在共享内存段中,然后发布访问文件所需的指针和段标识符,它将解决你的问题。记忆。 See this kernel document,和this one,也是{{3}}。他们可能会帮忙。
此外,一旦您解决了问题,请将您的解决方案作为答案发布,并在我的答案下方发表评论,以便Stack Overflow标记我回到这里并再次查看。