内联在这里没有帮助

你现在的代码是

void Log(string message, LogLevel logLevel) {
if (logLevel >= chosenLogLevel)
Console.WriteLine(message);
} void Foo()
{
Log(SlowFunction(), someLogLevel);
}

内联后变为:

void Foo()
{
var message = SlowFunction();
var logLevel = someLogLevel;
if (logLevel >= chosenLogLevel)
Console.WriteLine(message);
}

logLevel可以进一步内联,但根据定义,必须在检查之前调用SlowFunction()


避免这种情况的一种方法是将message传递为Func<string>

void Log(Func<string> message, LogLevel logLevel) {
if (logLevel >= chosenLogLevel)
Console.WriteLine(message());
} void Foo()
{
Log(SlowFunction, someLogLevel);
}

MethodImplOptions.AggressiveInlining如果一个昂贵的参数没有被使用,它能阻止它被评估吗?的更多相关文章

  1. C#内联函数 特性 MethodImplOptions.AggressiveInlining)

    [MethodImpl(MethodImplOptions.AggressiveInlining)] 内联函数 Impl:implement的缩写 内联函数 在计算机科学中,内联函数(有时称作在线函数 ...

  2. JavaScript中以一个方法作为参数的写法

    前言,我们写js的时候,经常会看到一些方法,比如说: $("#ids").click(function( alert("Click me"); )); ---- ...

  3. jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器

    1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...

  4. linux中内核的一个不错的参数somaxconn

    导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client ...

  5. c++中在一个类中定义另一个只有带参数构造函数的类的对象

    c++中在一个类中定义另一个只有带参数构造函数的类的对象,编译通不过 #include<iostream> using namespace std; class A { public:  ...

  6. Dubbo 泛化调用的参数解析问题及一个强大的参数解析工具 PojoUtils

    排查了3个多小时,因为一个简单的错误,发现一个强大的参数解析工具,记录一下. 背景 Nodejs 通过 tether 调用 Java Dubbo 服务.请求类的某个参数对象 EsCondition 有 ...

  7. JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器

    有这样一个压力测试环境,有一个上传页面,上传成功之后服务器会返回一些上传信息(比如文件的 id 或者保存路径之类的信息),然后压力机会继续下一个请求,比如调整 id 为 xx 的文件的一些信息等等.问 ...

  8. SQL得到任意一个存储过程的参数列表sp_procedure_params_rowset

    SQL得到任意一个存储过程的参数列表sp_procedure_params_rowsetexec sp_procedure_params_rowset 'up_rpt营业收入汇总表' PROCEDUR ...

  9. 【转】jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器

    1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...

  10. Tkinter Button按钮组件如何调用一个可以传入参数的函数

    这里我们要使用python的lambda函数,lambda是创建一个匿名函数,冒号前十传入参数,后面是一个处理传入参数的单行表达式. 调用lambda函数返回表达式的结果. 首先让我们创建一个函数fu ...

随机推荐

  1. 超实用!手把手教你Dify版本升级

    很多情况下,我们需要升级 Dify 版本以获得新的功能和性能的提升,同时还能确保系统的安全性.稳定性和兼容性,从而更好地满足用户的需求. 那问题来了,怎么升级 Dify 版本呢? 接下来,我们以 Do ...

  2. 有限Abel群的结构(2)

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 https://www.cnblogs.com/Colin-Cai/p/18791060.html 作者:窗户 ...

  3. PHP中的多线程与异步编程常见误区

    本文由 ChatMoney团队出品 在PHP开发中,多线程和异步编程是提高应用性能和响应速度的重要手段.然而,这些技术也带来了许多挑战和陷阱,如共享状态冲突.死锁.超时.资源泄漏以及调试困难等.本文将 ...

  4. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-20- 操作鼠标拖拽 - 上篇(详细教程)

    1.简介 本文主要介绍两个在测试过程中可能会用到的功能:在selenium中宏哥介绍了Actions类中的拖拽操作和Actions类中的划取字段操作.例如:需要在一堆log字符中随机划取一段文字,然后 ...

  5. 盘古信息领航PCB产业变革:以PCB行业解决方案筑基数字化工厂

    一.PCB 产业的数字化突围之战 在 5G 通信.人工智能与高端制造深度融合的当下,PCB 作为 "电子信息产业之基" 正面临双重变革压力:一方面,高端电子设备对高精密电路板的需求 ...

  6. HashMap集合--基本操作流程的源码可视化

    本文主要包含:HashMap 插入过程.扩容过程.查询过程和删除过程的源码可视化 文章对应的视频连接:https://www.bilibili.com/video/BV1wM3KzaE3d/ 1. 操 ...

  7. 多个pdf和图片、word实现预览和下载

    效果 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. ts类型声明

    declare一般写在类声明/定义/描述文件xx.d.ts中,表示声明作用.可以用来声明变量(var/let/const).方法(function).命名空间(namespace).类(class). ...

  9. 解锁ETLCloud中Kettle的用法

    随着大数据时代的到来,数据的处理和管理成为各行各业不可或缺的一环.ETL(Extract-Transform-Load)工具作为数据处理的重要环节,扮演着将数据从源端抽取出来.经过转换处理,最终加载至 ...

  10. Electrical(Harware) Levels: 常用电平LVTTL、LVCMOS、LVDS、CML的标准和区别

    电平: 电压范围, VOH(V. Output High), VOL(V. O. Low), VIH(V. In H.), VIL(V. In L.) Vref: Reference Voltage参 ...