编译器生成的最终图像包含bin文件和扩展加载器格式ELf文件,两者之间有什么区别,尤其是ELF文件的实用程序.
在Visual Studio编译以下C代码时,结果为4.
void main() { int c = 1; c = c<<34;}
Run Code Online (Sandbox Code Playgroud)
从Visual Studio反汇编窗口看到的汇编代码是
shl eax,22h
Run Code Online (Sandbox Code Playgroud)
从汇编开始,我们很容易看到我们正在转移34.由于这里的整数是4个字节,从结果来看很明显,模数运算是在机器级别上进行的,以使其工作为2.
我想知道这种行为是否跨平台标准化或跨平台不同?
我有一个 python 程序,它 1) 从磁盘中读取一个非常大的文件(约 95% 的时间),然后 2)处理并提供相对较小的输出(约 5% 的时间)。该程序将在 TB 级的文件上运行。
现在我希望通过利用多处理和多线程来优化这个程序。我正在运行的平台是一个虚拟机,在一个虚拟机上有 4 个处理器。
我计划有一个调度程序进程,它将执行 4 个进程(与处理器相同),然后每个进程应该有一些线程,因为大部分是 I/O 。每个线程将处理 1 个文件并将结果报告给主线程,主线程又将通过 IPC 将其报告回调度程序进程。调度程序可以将它们排队并最终以有序的方式将它们写入磁盘
所以想知道如何决定为这种情况创建的进程和线程的数量?有没有一种数学方法可以找出最佳组合。
谢谢