Linux下computed-goto实验对比

1、前言

前几天与小伙伴讨论了switch-case、if-else孰优孰劣,同时想起了当年有个cpython使用goto来优化switch-case的,性能提升了15-20%。使用的就是 computed goto 方法。

2、使用场景

在Python中有个字节码解释器(Bytecode Interpreter),源码是Python/ceval.c,主要是循环地处理字节流,输入一个char,输出一个计算结果。按参考文章[1],将核心代码模拟出来。

3、代码测试

首先是宏定义、switch-case的实现:

#define OP_HALT     0x0
#define OP_INC      0x1
#define OP_DEC      0x2
#define OP_MUL2     0x3
#define OP_DIV2     0x4
#define OP_ADD7     0x5
#define OP_NEG      0x6
#define OP_MAX      0x7

int bm_dispatch::interp_switch(const uint8_t *code, int initval)
{
   
   
    int pc = 0;
    int val = initval;

    while (1) {
   
   
        switch (code[pc++]) {
   
   
        case OP_HALT:
            return val;
        case OP_INC:
            val++;
            break;
        case OP_DEC:
            val--;
            break;
        case OP_MUL2:
            val *= 2
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值