小编rev*_*ure的帖子

为什么朱莉娅第一次打电话进入我的模块需要很长时间?

基本上我的情况就是这个.我有一个模块(也导入了许多其他模块).

我有一个脚本,如:

import MyModule

tic()
MyModule.main()

tic()
MyModule.main()
Run Code Online (Sandbox Code Playgroud)

在MyModule中:

__precompile__()

module MyModule
    export main

    function main()
        toc()
        ...
    end
end
Run Code Online (Sandbox Code Playgroud)

第一个toc()呼叫输出大约20秒.第二个输出2.3e-5.任何人都可以猜测时间的去向吗?Julia是否在第一次调用模块时进行某种初始化,我怎么能弄清楚它是什么?

performance julia

23
推荐指数
2
解决办法
5695
查看次数

在C#中确认格林斯普的第十定律

我正在尝试在C#中实现一个允许我制作任意数学表达式的基础结构.例如,我希望能够采用类似的表达式

asin(sqrt(z - sin(x + y)^ 2))

并将其转换为一个对象,允许我用x,y和z来评估它,得到导数,并可能在它上面做某种符号代数.人们对C#的良好模型的想法是什么?

我有自己的想法,我担心它会走向建筑航天,所以我想确保不是这样.

基本上,sin,+,sqrt等函数都有基于类的类:

Function

Function<TOut> : Function
    TOut Value

Function<Tin, TOut> : Function
    TOut Evaluate(TIn value)
    Function Derivative
    Function<TOut, TIn> INverse

Function<TInA, TInB, TOut> : Function
    TOut Evaluate(TInA valueA, TInB valueB)
    Function PartialDerivativeA
    Function PartialDerivativeB
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么简单.诀窍是如何组合功能.在这里,我相信我想要一个像currying方法的东西,这样我就可以评估单个参数的功能,并保留其他参数.所以我想有一个像这样的工厂类:

Function<TInA, TInB, TOut> -> 
           Function<TInA, Function<TInB, TOut>>

(Function<TInA, TInB, TOut>, Function<TInX, TInA>, null) -> 
           Function<TInX, Function<TInB, TOut>>

(Function<TInA, TInB, TOut>, Function<TInA>, Function<TInX, TInY, TInB>) -> 
           Function<TInX, Function<TInY, TInB>>
Run Code Online (Sandbox Code Playgroud)

等等.我主要担心的是泛型类型可能会使系统无法使用(如果要求用户知道要评估的完整泛型类型),并且我可能无法从输入参数构造所有泛型类型.

感谢您的输入!

c# expression currying

5
推荐指数
1
解决办法
288
查看次数

如何捕获返回非零退出代码的外部程序的输出?

在朱莉娅0.5之前,我可以跑

diff = readlines(`diff $oldfile $newfile`)
Run Code Online (Sandbox Code Playgroud)

并获得文件之间的差异.

现在Julia抛出异常,因为diff返回退出代码1,所以我不再获得分配给我的变量的输出.

解决这个问题的预期方法是什么?

julia

3
推荐指数
1
解决办法
72
查看次数

标签 统计

julia ×2

c# ×1

currying ×1

expression ×1

performance ×1