基本上我的情况就是这个.我有一个模块(也导入了许多其他模块).
我有一个脚本,如:
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是否在第一次调用模块时进行某种初始化,我怎么能弄清楚它是什么?
我正在尝试在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)
等等.我主要担心的是泛型类型可能会使系统无法使用(如果要求用户知道要评估的完整泛型类型),并且我可能无法从输入参数构造所有泛型类型.
感谢您的输入!
在朱莉娅0.5之前,我可以跑
diff = readlines(`diff $oldfile $newfile`)
Run Code Online (Sandbox Code Playgroud)
并获得文件之间的差异.
现在Julia抛出异常,因为diff返回退出代码1,所以我不再获得分配给我的变量的输出.
解决这个问题的预期方法是什么?