标签: inline

是否有任何理由不使用INLINABLE pragma作为函数?

文件规定:

函数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?

haskell inline pragma ghc

44
推荐指数
1
解决办法
1971
查看次数

如何在scala中的单个语句中检查null?

在我的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)

但我不希望增加一定程度的缩进.有内联运营商吗?

谢谢.

null scala inline

43
推荐指数
4
解决办法
10万
查看次数

链接器内联函数可以吗?

在该文件中file1.c,调用在文件中实现的函数file2.c.当我链接file1.o,并file2.o为可执行文件,如果该功能file2是非常小的,将连接器自动检测功能小,内联呼吁?

c optimization linker inline

43
推荐指数
1
解决办法
1万
查看次数

通过内联CSS加载外部字体

是否可以通过内联CSS加载外部字体?

注意:我不是在谈论使用带有@font-face定义的外部CSS文件,而是如下所示:

<h1 style="font-family:myfont;
    src:('http://example.com/font/myfont.tff')">test</h1>
Run Code Online (Sandbox Code Playgroud)

html css fonts inline font-face

42
推荐指数
2
解决办法
7万
查看次数

如何在C++中定义匿名函数?

我可以用C++内联定义函数吗?我不是在讨论lambda函数,而不是inline导致编译器优化的关键字.

c++ syntax inline function

42
推荐指数
4
解决办法
4万
查看次数

为什么内联被认为比函数调用更快?

现在,我知道这是因为没有调用函数的开销,但是调用函数的开销真的那么重(并且值得让它内联的膨胀)?

根据我的记忆,当一个函数被调用时,比如说f(x,y),x和y被压入堆栈,堆栈指针跳转到一个空块,然后开始执行.我知道这有点过于简单了,但我错过了什么吗?一些推送和跳转来调用一个函数,真的有那么多的开销吗?

如果我忘了什么,请告诉我,谢谢!

c++ optimization compilation inline function-call

40
推荐指数
6
解决办法
4461
查看次数

我什么时候应该(而且我不应该)使用Scala的@inline注释?

我相信我理解内联函数的基础:代替函数调用导致参数被放置在堆栈上并发生调用操作,函数的定义在编译时被复制到调用的位置,从而节省了调用开销在运行时.

所以我想知道:

  • scalac是否使用智能来内联某些函数(例如私有def)而没有注释的提示?

  • 我如何判断何时提示scalac内联函数是一个好主意?

  • 任何人都可以共享应该或不应该内联的函数或调用的示例吗?

scala inline

39
推荐指数
1
解决办法
8198
查看次数

如何从bash shell执行Python内联

是否有Python参数从shell执行代码而无需启动交互式解释器或从文件中读取?类似的东西:

perl -e 'print "Hi"'
Run Code Online (Sandbox Code Playgroud)

python shell inline execution

39
推荐指数
3
解决办法
3万
查看次数

C#使用SmtpClient以内联方式发送带有图像的邮件

SmtpClient()允许您在邮件中添加附件,但是如果您想在邮件打开时显示图像而不是附加它,该怎么办?

我记得,它可以使用大约4行代码完成,但我不记得我在MSDN网站上找不到它.

编辑:我没有使用网站或任何东西,甚至没有IP地址.图像位于硬盘上.发送时,它们应该是邮件的一部分.所以,我想我可能想要使用标签......但我不太确定,因为我的电脑没有广播.

c# inline smtpclient

38
推荐指数
3
解决办法
6万
查看次数

使用内联/ base64图像为网站比仅链接到硬文件要快多少?

与简单地链接到服务器上的硬文件相比,使用base64/line显示图像要快多少?

url(data:image/png;base64,.......)
Run Code Online (Sandbox Code Playgroud)

我无法在此找到任何类型的性能指标.

我有一些顾虑:

  • 您不再获得缓存的好处
  • 不是base64比PNG/JPEG文件大小大吗?

让我们定义"更快",如下所示:用户查看完整呈现的HTML网页所需的时间

html base64 rendering inline image

37
推荐指数
4
解决办法
3万
查看次数