第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

迄今為止的 CSV 和浮動

迄今為止的 CSV 和浮動

Go
SMILET 2023-06-05 19:44:44
我目前正在編寫一個小程序,將 CSV 文件轉(zhuǎn)換為用于進(jìn)一步處理的結(jié)構(gòu)。csv 行看起來像這樣20140102,09:30,38.88,38.88,38.82,38.85,67004我有 500 個文件,每個大約 20-30 MB。我的代碼工作得很好,但我不禁想知道是否有比我現(xiàn)在正在做的更好的方法來轉(zhuǎn)換這些文件。首先讀取文件并轉(zhuǎn)換為csv記錄(偽代碼)    data, err := ioutil.ReadFile(path)    if err != nil {        ...     }    r := csv.NewReader(bytes.NewReader(data))    records, err := r.ReadAll()    if err != nil {        ...     }然后遍歷所有記錄并做    parsedTime, err := time.Parse("2006010215:04", record[0]+record[1])    if err != nil {        return model.ZorroT6{}, time.Time{}, err    }    t6.Date = ConvertToOle(parsedTime)    if open, err := strconv.ParseFloat(record[2], 32); err == nil {        t6.Open = float32(open)    }    if high, err := strconv.ParseFloat(record[3], 32); err == nil {        t6.High = float32(high)    }    if low, err := strconv.ParseFloat(record[4], 32); err == nil {        t6.Low = float32(low)    }    if close, err := strconv.ParseFloat(record[5], 32); err == nil {        t6.Close = float32(close)    }    if vol, err := strconv.ParseInt(record[6], 10,32); err == nil {        t6.Vol = int32(vol)    }例如,我必須通過 []byte -> string -> float64 -> float32 來獲取我的浮點(diǎn)值。我可以做些什么來改進(jìn)這段代碼?編輯:要明確一點(diǎn),我真的不需要提高性能,我只是更好地嘗試了解 Go 以及可以應(yīng)用于此類問題的性能優(yōu)化。例如,當(dāng)我有一個字節(jié)切片并想要一個 float32 時,創(chuàng)建大量字符串和 float64 似乎有很多開銷。
查看完整描述

1 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個贊

我發(fā)現(xiàn)只有一個問題需要解決:

不要ioutil.ReadFile與一起使用bytes.NewReader。它將所有內(nèi)容讀入內(nèi)存,當(dāng)文件很大時效率低下。

相反,使用os.Open(file),它完美地提供了一個io.Reader可以csv.NewReader利用的。不要忘記關(guān)閉文件并處理錯誤。

如果您仍想提高性能:

  1. 由于您的 csv 文件是固定格式的,因此可以使用原始字節(jié)bufio代替csv.

  2. 您可以復(fù)制并粘貼底層代碼strconv,time以避免不需要的通用代碼。

但我認(rèn)為他們不值得麻煩。


查看完整回答
反對 回復(fù) 2023-06-05
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號