自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

好強一個Julia!CSV數(shù)據(jù)讀取,性能最高多出R、Python 22倍

新聞 前端
一項便捷且高效的語言對于數(shù)據(jù)工作者來說是至關(guān)重要的。目前,數(shù)據(jù)科學(xué)絕大多數(shù)使用的是R、Python、Java、MatLab和SAS。

 本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

工欲善其事,必先利其器。

一項便捷且高效的語言對于數(shù)據(jù)工作者來說是至關(guān)重要的。

目前,數(shù)據(jù)科學(xué)絕大多數(shù)使用的是R、Python、Java、MatLab和SAS。

其中,尤為Python、R的使用最為廣泛。

不過,Julia自2009年出現(xiàn)以來,憑借其速度、性能、易用性及語言的互操性等優(yōu)勢,已然掀起一股全新的浪潮。

最近,便有人使用Julia、Python和R對于CSV讀取速度進行了基準(zhǔn)測試。

其選用來3個不同的CSV解析器:

R的fread、Pandas的read_csv、Julia的CSV.jl

這三者分別在R,Python和Julia中被認(rèn)為是同類CSV解析器中“最佳” 。

之后使用他們分別讀取了8個不同真實數(shù)據(jù)集。

那么,測試的結(jié)果又是如何呢?讓我們來一起看下。

同構(gòu)數(shù)據(jù)集的性能

首先從同構(gòu)數(shù)據(jù)集開始進行性能測試。

性能指標(biāo)是隨著線程數(shù)從1增加到20而加載數(shù)據(jù)集所花費的時間。

由于Pandas不支持多線程,因此報告中的所有數(shù)據(jù)均為單線程的速度。

浮點型數(shù)據(jù)集

第一個數(shù)據(jù)集包含以1000k行和20列排列的浮點值。

Pandas需要232毫秒來加載此文件。

首先在單線程下,data.table(fread)比CSV.jl快1.6倍。

而在使用多線程處理時,CSV.jl則表現(xiàn)得更好,是data.table速度的2倍以上。

單線程CSV.jl是沒有多線程的Pandas(Python)的1.5倍,而多線程的CSV.jl可以達(dá)到11倍。

字符串?dāng)?shù)據(jù)集 I

此數(shù)據(jù)集在且具有1000k行和20列,并且所有列中不存在缺失值。

Pandas需要546毫秒來加載文件。

使用R,添加線程似乎不會導(dǎo)致任何性能提升。

單線程CSV.jl比data.table快2.5倍,而在10個線程中,CSV.jl則大約比data.table快14倍。

字符串?dāng)?shù)據(jù)集 II

該數(shù)據(jù)集的大小與字符串?dāng)?shù)據(jù)集 I 中相同。區(qū)別在于,其每一列是存在缺失值的。

Pandas需要300毫秒。

單線程中,CSV.jl比R快1.2倍,而多線程相比,CSV.jl則快約5倍。

蘋果股價數(shù)據(jù)集

該數(shù)據(jù)集包含50000k行和5列,大小為2.5GB。這些是AAPL股票的開盤價、最高價、最低價和收盤價。價格的四個列是浮點值,并且有一個列是日期。

單線程CSV.jl比從data.table中讀取的R速度快約1.5倍。

而多線程,CSV.jl的速度提高了約22倍!

Pandas的read_csv需要34秒才能讀取,這比R和Julia都要慢。

異構(gòu)數(shù)據(jù)集的性能

接下來是關(guān)于異構(gòu)數(shù)據(jù)集的性能測試。

混合型數(shù)據(jù)集

此數(shù)據(jù)集具有10k行和200列。這些列包含的數(shù)據(jù)值類型有:String,F(xiàn)loat,DateTime、Missing。

Pandas大約需要400毫秒來加載此數(shù)據(jù)集。

單線程中,CSV.jl比R快2倍,而使用10個線程則快了10倍。

按揭貸款風(fēng)險數(shù)據(jù)集

從Kaggle取得的按揭貸款風(fēng)險數(shù)據(jù)集是一種混合型的數(shù)據(jù)集,具有356k行和2190列。這些列是異構(gòu)的,其數(shù)據(jù)值類型有:String、Int、Float、Missing。

Pandas需要119秒才能讀取此數(shù)據(jù)集。

單線程data.table讀取大約比CSV.jl快兩倍。

但是,使用更多線程,Julia的速度與R一樣快或稍快。

寬數(shù)據(jù)集

這是一個相當(dāng)寬的數(shù)據(jù)集,具有1000行和20k列。數(shù)據(jù)集包含的數(shù)據(jù)值類型有:String、Int。

Pandas需要7.3秒才能讀取數(shù)據(jù)集。

在這種情況下,單線程的data.table大約比CSV.jl快5倍。線程的增加,CSV.jl稍慢于R。

房利美收購數(shù)據(jù)集

從房利美網(wǎng)站上下載的數(shù)據(jù)集,有4000k行和25列,數(shù)據(jù)類型為:Int、String、Float,Missing。

單線程data.table比CSV.jl快1.25倍。

但是,隨著線程的增加,CSV.jl的性能不斷提高。CSV.jl的多線程處理速度提高了約4倍。

總結(jié)

縱覽8個測試:

可以看出,在所有八個數(shù)據(jù)集中,Julia的CSV.jl總是比Pandas快,并且在多線程的情況下,它與R的data.table互有競爭。

可見,在CSV讀取方面,Julia完全有能力與Python或和R競爭甚至做得更好。

此外,Julia的CSV.jl是獨特的。

因為它是唯一直接以其高級語言完全實現(xiàn)功能的,這有別于先用C實現(xiàn)然后由R或Python工具進行封裝。

因此,Julia代碼的后續(xù)性能將有著更多的可能。

該項測試原文地址:

https://towardsdatascience.com/the-great-csv-showdown-julia-vs-python-vs-r-aa77376fb96

技術(shù)更新的討論

在Julia,Python和R的測試中,引發(fā)了網(wǎng)友們更多關(guān)于“技術(shù)更新”的熱烈討論。

有些網(wǎng)友對于Julia給予了極大的期待:

在過去的十年中,大多數(shù)生態(tài)系統(tǒng)在Python上都具有巨大的價值,尤其是將MATLAB拋在腦后。

我認(rèn)為從舊技術(shù)過渡到新技術(shù)的十年之久并不是一個糟糕的時標(biāo),甚至沒有接近網(wǎng)絡(luò)技術(shù)的翻版。

Julia對Python進行了足夠的改進,可以保證在接下來的5-10年內(nèi)進行轉(zhuǎn)換,并以相同的方式將Python拋在后面。

不過,也有網(wǎng)友表達(dá)了對“更新重置成本”的擔(dān)憂:

我認(rèn)為Python的生態(tài)系統(tǒng)已經(jīng)成熟,并且在過去的1-2年中已成為標(biāo)準(zhǔn),這具有巨大的價值。

從頭開始使用一種新語言(即使該語言可能稍好一些)會浪費很多精力。從Python2過渡到3已經(jīng)是一場噩夢。

我知道Julia和Python之間存在一些互操作性,但是很多東西是無法互操作的,并且數(shù)組索引等方面存在令人討厭的差異。

人們?yōu)槭裁床荒軆H僅依靠某種技術(shù),使其成熟并享受越來越高的功能?為什么我們總是要撕毀一切并從頭開始?

 

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2022-10-08 09:03:16

JuliaPython機器學(xué)習(xí)

2021-03-17 08:11:29

SpringBoot項目數(shù)據(jù)庫

2016-08-18 00:44:38

Python編程語言

2021-07-26 17:18:03

Linux進程通信

2024-07-04 10:23:51

2021-12-29 11:06:25

Java代碼技巧

2020-07-13 14:35:25

可視化數(shù)據(jù)編程

2020-08-24 08:34:03

命令性能優(yōu)化

2024-12-13 08:02:10

PythonGenerator懶加載

2022-03-21 17:56:59

大模型訓(xùn)練訓(xùn)練框架

2022-03-21 15:06:10

模型字節(jié)跳動框架

2018-05-28 08:13:17

數(shù)據(jù)中心性能IT基礎(chǔ)

2016-10-28 12:48:23

R語言Python數(shù)據(jù)分析

2019-10-08 14:22:43

分布式HDFS算法

2021-01-27 11:50:07

Python優(yōu)化代碼

2015-09-22 09:30:02

r語言

2020-11-16 19:18:15

Jupyter微軟編程

2020-02-12 09:35:30

AI 數(shù)據(jù)人工智能
點贊
收藏

51CTO技術(shù)棧公眾號