该文件规定:
函数f上的{ - #INLINABLE f# - } pragma具有以下行为:
虽然INLINE说"请内联我",INLINABLE说"请随意内联我;请自行决定".换句话说,选择留给GHC,它使用与无编译指示函数相同的规则.与INLINE不同,该决定是在呼叫站点进行的,因此会受到内联阈值,优化级别等因素的影响.
与INLINE类似,INLINABLE pragma保留原始RHS的副本以用于内联,并且无论RHS的大小如何,都将其保留在接口文件中.
使用INLINABLE的一种方法是结合内联特殊函数(第7.18节"特殊内置函数").调用内联f非常难以内联f.为了确保f可以内联,最好将f的定义标记为INLINABLE,以便GHC保证在不管它有多大的情况下展开展开.此外,通过将f注释为INLINABLE,可以确保f的原始RHS内联,而不是f GHC优化器产生的任何随机优化版本.
INLINABLE pragma也适用于SPECIALIZE:如果将函数f标记为INLINABLE,那么随后可以在另一个模块中进行SPECIALIZE(参见第7.16.8节"SPECIALIZE pragma").
与INLINE不同,可以在递归函数上使用INLINABLE编译指示.主要原因是允许以后使用SPECIALIZE
它的缺点是什么?
它是否使界面文件更大,更大?它是否使编译速度慢得多?
有没有理由我不应该在我写的每个导出函数上放置一个INLINABLE pragma?是否有任何理由GHC没有在我写的每个导出函数上放置一个INLINABLE pragma?
在我的scala代码中:
QueueManager.add(getObject)
Run Code Online (Sandbox Code Playgroud)
where getObject是返回类型对象的方法QueueObject.
def getObject : QueuObject = {
val response = //some response
return response
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在添加QueueObject的同时检查响应为null?我知道我可以这样做:
if (getObject != null)
QueueManager.add(getObject)
Run Code Online (Sandbox Code Playgroud)
但我不希望增加一定程度的缩进.有内联运营商吗?
谢谢.
在该文件中file1.c,调用在文件中实现的函数file2.c.当我链接file1.o,并file2.o为可执行文件,如果该功能file2是非常小的,将连接器自动检测功能小,内联呼吁?
是否可以通过内联CSS加载外部字体?
注意:我不是在谈论使用带有@font-face定义的外部CSS文件,而是如下所示:
<h1 style="font-family:myfont;
src:('http://example.com/font/myfont.tff')">test</h1>
Run Code Online (Sandbox Code Playgroud) 我可以用C++内联定义函数吗?我不是在讨论lambda函数,而不是inline导致编译器优化的关键字.
现在,我知道这是因为没有调用函数的开销,但是调用函数的开销真的那么重(并且值得让它内联的膨胀)?
根据我的记忆,当一个函数被调用时,比如说f(x,y),x和y被压入堆栈,堆栈指针跳转到一个空块,然后开始执行.我知道这有点过于简单了,但我错过了什么吗?一些推送和跳转来调用一个函数,真的有那么多的开销吗?
如果我忘了什么,请告诉我,谢谢!
我相信我理解内联函数的基础:代替函数调用导致参数被放置在堆栈上并发生调用操作,函数的定义在编译时被复制到调用的位置,从而节省了调用开销在运行时.
所以我想知道:
scalac是否使用智能来内联某些函数(例如私有def)而没有注释的提示?
我如何判断何时提示scalac内联函数是一个好主意?
任何人都可以共享应该或不应该内联的函数或调用的示例吗?
是否有Python参数从shell执行代码而无需启动交互式解释器或从文件中读取?类似的东西:
perl -e 'print "Hi"'
Run Code Online (Sandbox Code Playgroud) SmtpClient()允许您在邮件中添加附件,但是如果您想在邮件打开时显示图像而不是附加它,该怎么办?
我记得,它可以使用大约4行代码完成,但我不记得我在MSDN网站上找不到它.
编辑:我没有使用网站或任何东西,甚至没有IP地址.图像位于硬盘上.发送时,它们应该是邮件的一部分.所以,我想我可能想要使用标签......但我不太确定,因为我的电脑没有广播.
与简单地链接到服务器上的硬文件相比,使用base64/line显示图像要快多少?
url(data:image/png;base64,.......)
Run Code Online (Sandbox Code Playgroud)
我无法在此找到任何类型的性能指标.
我有一些顾虑:
让我们定义"更快",如下所示:用户查看完整呈现的HTML网页所需的时间