我试着比较这两个片段,看看一秒钟可以完成多少次迭代。事实证明,Julia 实现了 250 万次迭代,而 Python 实现了 400 万次。朱莉娅不是应该更快吗?或者这两个片段可能不等价?
Python:
t1 = time.time()
i = 0
while True:
i += 1
if time.time() - t1 >= 1:
break
Run Code Online (Sandbox Code Playgroud)
朱莉娅:
function f()
i = 0
t1 = now()
while true
i += 1
if now() - t1 >= Base.Dates.Millisecond(1000)
break
end
end
return i
end
Run Code Online (Sandbox Code Playgroud) 我们可以在julia中将一个函数作为另一个函数的参数传递吗?它是如何工作的?这是否意味着输入函数先于调用函数运行,还是仅在调用函数专门调用输入函数时才调用输入函数?
我想看看我编写的Julia代码是否存在任何性能问题。我知道@code_lowered可以很好地了解编译器如何解释代码,但是什么时候才是@code_lowered最有用的。是否有某些性能或其他问题可以很好地突出显示(如果您能理解打印输出),而在其他情况下则没什么用?
我也知道Julia中还有其他很棒的分析工具,我只是想大致了解每种工具的用例。
julia> @code_lowered Int(1.0)
CodeInfo(
1 ? %1 = -9.223372036854776e18 <= x
??? goto #3 if not %1
2 ? @_3 = x < 9.223372036854776e18
??? goto #4
3 ? @_3 = false
4 ? goto #6 if not @_3
5 ? %7 = Base.round(x, Base.RoundToZero)
? @_4 = %7 == x
??? goto #7
6 ? @_4 = false
7 ? goto #9 if not @_4
8 ? %12 = Base.unsafe_trunc(Int64, x)
??? return …Run Code Online (Sandbox Code Playgroud) 从范围创建数组时,我对Julia的这种行为感到有点困惑。我想了解以下内容的基本机制。
A = [1:10]
Run Code Online (Sandbox Code Playgroud)
结果是 1-element Array{UnitRange{Int64},1}
这不是我想要的。上面的代码创建一个Array 的 UnitRange。Julia文档建议使用collect()从范围创建数组,如下所示:
A = collect(1:10)
Run Code Online (Sandbox Code Playgroud)
结果10-element Array{Int64,1}。完善。
但是,如果我在范围后添加分号,则此代码也可以使用。
A = [1:10;]
Run Code Online (Sandbox Code Playgroud)
根据Julia的文档,;是进行vcat()垂直连接或串联的简写形式。什么是意义vcat使用它作为时A = [1:10;]。它不仅看起来很奇怪(用什么来吸引它?),对我来说也没有意义。
我希望就范围如何与vcat交互进行清晰的解释。
我一直在使用R进行公司财务和资产定价方面的研究,并且由于我在数学和统计方面的背景,我非常喜欢它.到目前为止,我在R中遇到了两个主要的约束.第一个是处理大数据文件,但我有点通过将R与PostgreSQL和Spark结合起来避开它,我相信我可以从高性能计算机或AWS云获得更多内存在将来.第二个约束是执行速度(对于通过刻度安全报价数据处理滴答很重要),我被推荐Julia比R具有巨大的速度优势.我的问题是,由于Rcpp提供了非常快的执行速度,Julia的速度优势仍然存在保持?我在考虑是否应该学习朱莉娅.
此外,R提供了与WRDS,Quandl,TrueFX和TAQ的完美数据库连接,我真的习惯了Hadley Wickham风格的数据清理.作为一名学者,我有点像R得到了像Journal of Stat Software这样的同行评审期刊的支持.我会试试朱莉娅,看看它是如何运作的.感谢所有的答案和评论!