Mar*_*pio 11 c++ performance parsing equation
我将大约一个月的全职时间沉入本机C++方程解析器中.它工作,除了它很慢(比硬编码方程慢30-100倍).我可以改变什么来加快速度?
我阅读了有关高效代码的所有内容.大致说一下:
在计算方程时没有遇到单个if/switch - 所有条件都由解析器在最初分配函数指针时处理.
我有很多代码.不知道要提炼/发布什么.询问它的某些方面,你们将得到.
从您的描述中很难判断缓慢是否包括解析,或者只是解释时间。
如果将解析器编写为递归下降 (LL1),则解析器应该受 I/O 限制。换句话说,解析器读取字符以及构建解析树所花费的时间应该比简单地将文件读入缓冲区所需的时间少得多。
解释又是另一回事了。解释代码和编译代码之间的速度差异通常要慢 10-100 倍,除非基本操作本身很长。也就是说,您仍然可以对其进行优化。
您可以进行分析,但在这种简单的情况下,您也可以在调试器中以单个指令的级别单步执行程序。这样,您就“站在计算机的立场上行走”,并且可以明显看出哪些方面可以改进。
每当我做你正在做的事情时,即向用户提供一种语言,但我希望该语言能够快速执行,我所做的就是:我将源语言翻译成我有编译器的语言,然后将其即时编译为 .dll(或 .exe)并运行。它非常快,我不需要编写解释器,也不需要担心它有多快。