Why is printf in F# so slow?

前端 未结 4 2030
悲&欢浪女
悲&欢浪女 2020-12-14 02:50

I\'ve just been really surprised by how slow printf from F# is. I have a number of C# programs that process large data files and write out a number of CSV files. I originall

4条回答
  •  鱼传尺愫
    2020-12-14 03:38

    TextWriter already buffers its output. I recommend using Write to output each value, one at a time, instead of formatting an entire line and passing it to WriteLine. On my laptop, writing 100,000 lines takes nearly a minute using your function, while, using the following function, it runs in half a second.

    let writeRow (writer:TextWriter) siteName (sector:Sector) = 
      let inline write (value:'a) (delim:char) = 
        writer.Write(value)
        writer.Write(delim)
      let inline quote s = "\"" + s + "\""
      write (quote sector.Label) ','
      write sector.Longitude ','
      write sector.Latitude ','
      write sector.RNCId ','
      write sector.CellId ','
      write (quote siteName) ','
      write (quote sector.Switch) ','
      write (quote sector.Technology) ','
      write (int sector.Azimuth) ','
      write sector.PrimaryScramblingCode ','
      write (int sector.FrequencyBand) ','
      write (int sector.Height) ','
      write (quote sector.PatternName) ','
      write (int sector.Beamwidth) ','
      write (int sector.ElectricalTilt) ','
      write (int sector.MechanicalTilt) ','
      write (int (sector.ElectricalTilt + sector.MechanicalTilt)) ','
      write sector.SectorType ','
      write (int sector.Radius) '\n'
    

提交回复
热议问题