我有一个C ++代码正在大文件(约15 GB)上执行。代码有两个阶段,第一阶段需要很长时间才能完成。但同时我的第2阶段有更好的实现技术,并且不想从一开始就重启整个执行。这两个阶段按实际使用的两个类别进行分类。从中得出一个想法:
Parser.parse(filePath); // phase one
Processor.processAndLog(); // phase two
那么,是否有一些方法可以在开始执行之前更改Processor类的实现?第1阶段的结束(或者甚至已经完成了多少)可以与我打印的一些不时的消息(比如日志)区分开来。
答案 0 :(得分:0)
如果Processor.processAndLog
是成员函数指针,则可以在调用之前随时更改它。
另一种方法是让Processor.processAndLog成为其他函数的包装函数 - 一个调度函数。
还有挂钩功能的问题。那里有一个名为detours的图书馆。仅当您无法在程序中更改源代码时才使用此功能。
答案 1 :(得分:0)
因此,如果我理解正确:您有一个当前正在运行的程序,但尚未执行特定类中的代码。并且您希望找到一种更新它的方法,以便在不停止程序的情况下为该类使用新版本的代码。
理论上可以做到。但在实践中,它可能比它的价值更麻烦,特别是如果这是一次性的需要。 C ++不是为这种东西设计的。这并不是简单的人类可读源代码可以轻易地覆盖在进程的内存中。
正确地做这件事几乎肯定需要花费大量的时间和精力,很可能涉及大量的实验和追踪错误。如果你弄错了(这可能是第一次),那么你可能只是破坏了你的过程和结果,因此无论如何都需要重新启动它。
我不知道您的流程目前需要多长时间,但是在构建新版本的程序后,尝试计算如何实现这个想法可能需要花费更多时间,而不仅仅是重新启动流程。