gpt4 book ai didi

在 C 中完全删除运行时的函数调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:20 25 4
gpt4 key购买 nike

是否可以在运行时从 C 代码中完全删除函数调用,并在需要时将其插入。

我不确定是否可以在运行时修改 ELF,以便在不使用函数的情况下不会浪费 cpu 周期。

我不想在函数调用之前放置“if”检查以避免调用函数。

例如,如果全局标志 g_flg=1 那么 func1 应该如下所示

void func1(int x)
{
/* some processing */

func2(y);

/* some processing */

}

如果 global g_flag=0 那么 func1 应该如下所示

void func1(int x)
{
/* some processing */

/* some processing */

}

最佳答案

不要优化不需要它的东西。您是否尝试过评估对您的绩效的潜在改进?

尝试将 g_flg 设置为 1 并执行此操作:

if (g_flg == 1) {func2(y);}

然后尝试执行这个:

func2(y);

两者都是 100 万次(或者您可以在合理时间内运行它的任何次数)。我敢肯定,您会注意到这两者之间几乎没有区别。

另外,除此之外,我认为你想做的事情是不可能的,因为 ELF 是一种二进制(编译)格式。

关于在 C 中完全删除运行时的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com