目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
104 / 118 ツリー ←次へ | 前へ→

【79】CSVファイルのデータ行数のカウント速度比べ Jaka 04/10/27(水) 15:47 Excel[未読]

【79】CSVファイルのデータ行数のカウント速度比べ
Excel  Jaka  - 04/10/27(水) 15:47 -

引用なし
パスワード
   2003年1月ごろの郵政省の郵便番号表「Ken_all.csv」(121333行)で、アバウトな方法で比べてみました。
思ってたより差がでなくて1秒前後ぐらいの差しかないみたいでした。

最初、動いているかどうかも確認したかったので、セルにカウント数を書き込んでたら、遅さにビックリしてしまいました。
結果、私としてはどれでも良いんですが、Runtime使ったりするのは抵抗があるし、INputBで読み込むのは速い事はかなり速いんですが、変換して処理するってのも場合によっては面倒だし、結局は、これで飯食ってるわけでもないので、やっぱりどっちでも良いやって事です。


・普通のLine Input

Pen2.233 96M セルへの書込有  Pen2.233 96M セルへの書込無
 70600行 0:02:53        65536行 0:00:04
 70600行 0:02:37

Cel750 256M セルへの書込有  Cel750 256M セルへの書込無
 65536行 0:02:17        65536行 0:00:01
 65536行 0:02:38        65536行 0:00:01

                Cel750 256M セルへの書込無
                 121333行 0:00:02


・INputB_Instr

Pen2.233 96M セルへの書込有  Pen2 233 96M セルへの書込無
 70600行 0:02:41        65536行 0:00:05
 70600行 0:02:42        65536行 0:00:02

Cel750 256M セルへの書込有  Cel750 256M セルへの書込無
 65536行 0:02:38        65536行 0:00:01
 65536行 0:02:37        65536行 0:00:01


・FSO仕様

Pen2.233 96M         Cel750 256M          Cel750 256M
 70600行 0:00:03       65536行 0:00:01        121333行 0:00:02

Pen2 233 96M
 65536行 0:00:03
 65536行 0:00:02

---------------------------------------
Sub 普通のInput()
  オープンファイル = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
  STime = Now()
  If オープンファイル <> False Then
    拡張子 = StrConv(Right(オープンファイル, 3), vbUpperCase)
    Open オープンファイル For Input As #1
  Else
    End
  End If
  Do Until EOF(1)
    Line Input #1, ReadDete
    CSV全データ行数 = CSV全データ行数 + 1
    'Range("A5").Value = CSV全データ行数  'これがあると無いとの比較もしてみてください。
  Loop
  Close #1
  Range("A5").Value = CSV全データ行数
  Range("B5").Value = Format(STime - Now(), "hh:mm:ss")
  MsgBox Format(STime - Now(), "hh:mm:ss") & vbLf & CSV全データ行数
End Sub


Sub INPUTB_inStr()
  Dim RDM As String, RDM2 As String, RDM3 As String, CSV全データ行数 As Long
  オープンファイル = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
  STime = Now()
  If オープンファイル <> False Then
    Open オープンファイル For Input As #1
  Else
    End
  End If
  RDM = InputB(LOF(1), #1)
  Close #1
  RDM = StrConv(RDM, vbUnicode) '無いとまともな文字でない。
  i = 1
  Do
    CC = InStr(i, RDM, vbLf)
    If CC <> 0 Then
     CSV全データ行数 = CSV全データ行数 + 1
     'Range("A9").Value = CSV全データ行数  'これがあると無いとの比較もしてみてください。
     On Error Resume Next
     i = CC + 1
    End If
  Loop Until CC = 0 Or Err
  Range("A9").Value = CSV全データ行数
  Range("B9").Value = Format(STime - Now(), "hh:mm:ss")
  MsgBox Format(STime - Now(), "hh:mm:ss") & vbLf & CSV全データ行数
End Sub


【参照設定】 Microsoft Scripting Runtime のチェック必要

Sub FSO仕様()
  Dim Fso As New Scripting.FileSystemObject
  Dim オープンファイル As String
  オープンファイル = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
  If オープンファイル = "False" Then
    End
  End If
  ST = Now()
  With Fso.OpenTextFile(Filename:=オープンファイル, IOMode:=ForReading)
    Do Until .AtEndOfLine
      .SkipLine
    Loop
    FSC = .Line - 1
  End With
  Range("A12").Value = FSC
  Range("B12").Value = Format(ST - Now(), "hh:mm:ss")
  MsgBox Format(ST - Now(), "hh:mm:ss") & vbLf & CSV全データ行数
End Sub

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
104 / 118 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free