标签: julia

朱莉娅在pypy中的Python性能示例

Julia是一种新的统计编程语言,其声称性能明显优于竞争语言.我正试图验证这一点.Julia有一个用Python编写的性能测试:https: //github.com/JuliaLang/julia/blob/master/test/perf/perf.py

我不能让它与pypy一起工作.也许这是因为numpypy与numpy不兼容,但我还没有达到足够的程度来确定这一点.我按照ImportError建议,"...or just write 'import numpypy' first in your program..."但我得到另一个ImportError:"No module named numpy.linalg"

我对Python几乎没有经验,我正在寻找一个可以运行的完整解决方案.让它发挥作用的好处是我们可以进行一对一(jit lang-to-jit lang)比较.

python pypy numpy python-2.7 julia

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

不同编程语言的浮点数学

我知道浮点数学最多可能是丑陋的,但我想知道是否有人可以解释以下的怪癖.在我测试的大多数编程语言中,0.4到0.2的加法给出了轻微的误差,其中0.4 + 0.1 + 0.1给出了非.

是什么原因导致计算的不平等以及可以在各自的编程语言中采取哪些措施来获得正确的结果.

在python2/3中

.4 + .2
0.6000000000000001
.4 + .1 + .1
0.6
Run Code Online (Sandbox Code Playgroud)

Julia 0.3也是如此

julia> .4 + .2
0.6000000000000001

julia> .4 + .1 + .1
0.6
Run Code Online (Sandbox Code Playgroud)

和斯卡拉:

scala> 0.4 + 0.2
res0: Double = 0.6000000000000001

scala> 0.4 + 0.1 + 0.1
res1: Double = 0.6
Run Code Online (Sandbox Code Playgroud)

和哈斯克尔:

Prelude> 0.4 + 0.2
0.6000000000000001    
Prelude> 0.4 + 0.1 + 0.1
0.6
Run Code Online (Sandbox Code Playgroud)

但是R v3是正确的:

> .4 + .2
[1] 0.6
> .4 + .1 + .1
[1] 0.6
Run Code Online (Sandbox Code Playgroud)

python floating-point haskell r julia

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

与Python相比,阅读朱莉娅的csv很慢

与Python相比,阅读Julia中的大文本/ csv文件需要很长时间.以下是读取大小为486.6 MB且包含153895行和644列的文件的时间.

python 3.3的例子

import pandas as pd
import time
start=time.time()
myData=pd.read_csv("C:\\myFile.txt",sep="|",header=None,low_memory=False)
print(time.time()-start)

Output: 19.90
Run Code Online (Sandbox Code Playgroud)

R 3.0.2示例

system.time(myData<-read.delim("C:/myFile.txt",sep="|",header=F,
   stringsAsFactors=F,na.strings=""))

Output:
User    System  Elapsed
181.13  1.07    182.32
Run Code Online (Sandbox Code Playgroud)

Julia 0.2.0(Julia Studio 0.4.4)示例#1

using DataFrames
timing = @time myData = readtable("C:/myFile.txt",separator='|',header=false)

Output:
elapsed time: 80.35 seconds (10319624244 bytes allocated)
Run Code Online (Sandbox Code Playgroud)

Julia 0.2.0(Julia Studio 0.4.4)示例#2

timing = @time myData = readdlm("C:/myFile.txt",'|',header=false)

Output:
elapsed time: 65.96 seconds (9087413564 bytes allocated)
Run Code Online (Sandbox Code Playgroud)
  1. Julia比R快,但与Python相比相当慢.我可以做些什么来加快阅读大文本文件的速度?

  2. 另一个问题是内存中的大小是Julia中硬盘文件大小的18倍,但是python只有2.5倍大小.在Matlab中,我发现它对于大文件来说是最有效的内存,它是2 x大小的硬盘文件大小.Julia内存中文件大小的任何特殊原因?

julia

23
推荐指数
6
解决办法
8410
查看次数

如何以及何时在Julia中使用@async和@sync

我已经阅读了和宏的文档,但仍然无法弄清楚如何以及何时使用它们,也无法在互联网上的其他地方找到许多资源或示例. @async@sync

我的直接目标是找到一种方法来设置几个工作程序并行工作,然后等待它们全部完成后继续我的代码.这篇文章:等待在Julia的远程处理器上完成的任务包含一个成功的方法来实现这一点.我原以为应该可以使用@async@sync宏,但是我最初的失败让我想知道我是否正确理解了如何以及何时使用这些宏.

parallel-processing macros synchronization asynchronous julia

23
推荐指数
1
解决办法
6383
查看次数

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

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

我有一个脚本,如:

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
查看次数

如何在 Julia 中有效计算二次形式?

我想计算一个二次形式:x' Q y在 Julia 中。
对于这种情况,计算此值的最有效方法是什么:

  1. 没有假设。
  2. Q是对称的。
  3. xy相同(x = y)。
  4. 两者Q都是对称的并且x = y.

我知道朱莉娅有dot()。但我想知道它是否比 BLAS 调用更快。

performance julia quadratic-programming

23
推荐指数
4
解决办法
1493
查看次数

搜索文件夹中的文件

我正在尝试使用Julia解析大量文本文件,并且我想循环遍历文件名数组,而不是键入函数调用来单独读取每个文件.到目前为止,我一直无法找到一种方法来搜索文件夹中与模式匹配的文件.

是否有一个基础库Julia函数,它将返回给定文件夹中的所有文件名,匹配给定的字符串模式?

R中的等效函数是list.files(),如果这有助于传达我想要的东西.

julia

22
推荐指数
2
解决办法
9587
查看次数

在Julia中使用PyPlot实现一个迭代器

我只是想 在Matplotlib中重现这个简单的动画示例,但在Julia中使用PyPlot.我对simData()传递给函数的迭代器的定义有困难funcAnimation,因为似乎PyPlot不能识别我在Julia中定义的迭代器(通过Task).

这是我定义相同功能的方法simData():

function simData()

    t_max = 10.0
    dt = 0.05
    x = 0.0
    t = 0.0

    function it()
        while t < t_max
            x = sin(pi*t)
            t = t+dt
            produce(x,t)
        end
    end
    Task(it)
end
Run Code Online (Sandbox Code Playgroud)

正如您可以检查的那样,这种迭代器在理论上产生的值simData()与示例中的python 生成器相同(例如尝试collect(simData()).但是,当我尝试动画时出现此错误

LoadError: PyError (:PyObject_Call) <type 'exceptions.TypeError'>
TypeError('PyCall.jlwrap object is not an iterator',)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/animation.py", line 1067, in __init__
    TimedAnimation.__init__(self, fig, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/animation.py", line 913, in __init__
    *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/animation.py", …
Run Code Online (Sandbox Code Playgroud)

python animation matplotlib julia

22
推荐指数
1
解决办法
1209
查看次数

Julia中的@ code_native,@ code_typed和@code_llvm有什么区别?

在浏览julia时,我想要一个类似于python dis模块的功能.通过网络,我发现Julia社区已经解决了这个问题并给出了这些(https://github.com/JuliaLang/julia/issues/218)

finfer -> code_typed
methods(function, types) -> code_lowered
disassemble(function, types, true) -> code_native
disassemble(function, types, false) -> code_llvm
Run Code Online (Sandbox Code Playgroud)

我亲自使用Julia REPL尝试了这些,但我似乎很难理解.

在Python中,我可以反汇编这样的函数.

>>> import dis
>>> dis.dis(lambda x: 2*x)
  1           0 LOAD_CONST               1 (2)
              3 LOAD_FAST                0 (x)
              6 BINARY_MULTIPLY     
              7 RETURN_VALUE        
>>>
Run Code Online (Sandbox Code Playgroud)

任何使用过这些东西的人都可以帮助我更多地理解它们吗?谢谢.

julia

22
推荐指数
1
解决办法
2933
查看次数

Julia中的字段和属性之间有什么区别?

Julia具有setter函数setproperty!setfield!getter函数getpropertygetfield并且在结构上运行。Julia中的属性和字段之间有什么区别?

例如,以下内容似乎表明它们执行相同的操作:

julia> mutable struct S
           a
       end

julia> s = S(2)
S(2)

julia> getfield(s, :a)
2

julia> getproperty(s, :a)
2

julia> setfield!(s, :a, 3)
3

julia> s
S(3)

julia> setproperty!(s, :a, 4)
4

julia> s
S(4)
Run Code Online (Sandbox Code Playgroud)

julia

22
推荐指数
1
解决办法
626
查看次数