gpt4 book ai didi

julia - 与 Python 相比,在 Julia 中读取 csv 速度较慢

转载 作者:行者123 更新时间:2023-12-03 11:03:50 24 4
gpt4 key购买 nike

与 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

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

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)

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)
  • Julia 比 R 快,但与 Python 相比相当慢。我可以采取什么不同的方式来加快读取大型文本文件的速度?
  • 一个单独的问题是内存中的大小是 Julia 中硬盘文件大小的 18 倍,但 Python 中仅为 2.5 倍。在 Matlab 中,我发现它对于大文件的内存效率最高,它是硬盘文件大小的 2 倍。 Julia 内存中大文件大小的任何特殊原因?
  • 最佳答案

    最好的答案可能是我不如 Wes 是一个优秀的程序员。
    一般来说,DataFrames 中的代码不如 Pandas 中的代码优化得好。我相信我们可以迎头 catch ,但这需要一些时间,因为我们需要首先实现许多基本功能。由于需要在 Julia 中构建的内容太多,我倾向于将工作重点放在三个部分:(1) 构建任何版本,(2) 构建正确的版本,(3) 构建快速、正确的版本。对于我所做的工作,Julia 通常不提供任何版本的基本功能,因此我的工作重点放在 (1) 和 (2) 上。随着我需要的工具越来越多,专注于性能会更容易。
    至于内存使用,我认为答案是我们在解析表格数据时使用的一组数据结构比 Pandas 使用的效率低得多。如果我更了解 Pandas 的内部结构,我可以列出我们效率较低的地方,但现在我只是推测一个明显的失败是我们正在将整个数据集读入内存而不是从磁盘中抓取块.这当然是可以避免的,这样做也存在一些问题。这只是时间问题。
    关于这一点,readtable代码相当容易阅读。最确定的获取方式readtable更快的是推出 Julia 分析器并开始修复它发现的性能缺陷。

    关于julia - 与 Python 相比,在 Julia 中读取 csv 速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21890893/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com