将任何程序转换为语义上等效的程序

Rau*_*akS 6 c compiler-construction optimization performance

我最近在这里找到了这个定理,(在底部):

Any program can be transformed into a semantically equivalent program of one procedure containing one switch statement inside a while loop.

文章继续说:

A corollary to this theorem is that any program can be rewritten into a program consisting of a single recursive function containing only conditional statements

我的问题是,这些定理今天都适用吗?同样改变计划是否会获得任何好处?我的意思是说,这样的代码是否经过优化?(虽然递归调用较慢,但我知道)

我从这里开始读到,在编译器优化后,开关案例几乎总是更快.这有什么区别吗.?

PS:我试图从这里了解编译器优化

我添加了c标签,因为这是我见过的唯一一种优化的语言.

Ira*_*ter 7

这是真的.图灵机本质上是符号的开关语句是不断重复的,所以它很直接的图灵机,计算依据的一切.switch语句只是一堆条件,所以你可以清楚地把这样的程序写成一个只有条件的循环.一旦你有了这个,从递归开始循环很容易,尽管如果你的语言没有真正的词法作用域,你可能不得不将很多状态变量作为参数传递.

在实践中没有理由这样做.这些程序通常比原件运行得慢,并且可能占用更多空间.那么为什么你可能会减慢你的程序速度,和/或使其负载图像更大?

唯一有意义的地方是你打算混淆代码.这种技术通常用作"控制流混淆".