質問するログイン新規登録

回答編集履歴

1

サンプル追加

2018/02/22 05:08

投稿

otn
otn

スコア86367

answer CHANGED
@@ -1,3 +1,29 @@
1
1
  全ファイルの全レコードをメモリ上に読み込むようになっているので、メモリを大量に消費してページングが多発しているんだと思います。
2
2
 
3
- ファイルを一気に読まずに、1行ずつ読むように変えるのがいいかと思います。
3
+ ファイルを一気に読まずに、1行ずつ読むように変えるのがいいかと思います。
4
+
5
+ #サンプル追記
6
+ 3ファイルを読んで、横につないで表示する。
7
+ ```Ruby
8
+ fx = open("ファイル名X")
9
+ fy = open("ファイル名Y")
10
+ fz = open("ファイル名Z")
11
+
12
+ # ヘッダだけ特別処理をする場合
13
+ head_x = fx.gets(chomp: true)
14
+ head_y = fy.gets(chomp: true)
15
+ head_z = fz.gets(chomp: true)
16
+
17
+ puts "ヘッダは #{head_x},#{head_y},#{head_z}"
18
+
19
+ while date_x = fx.gets(chomp: true) and
20
+ date_y = fy.gets(chomp: true) and
21
+ date_z = fz.gets(chomp: true)
22
+ puts "#{data_x},#{data_y},#{data_z}"
23
+ end
24
+ fx.close
25
+ fy.close
26
+ fz.close
27
+ ```
28
+
29
+ 普通は、`open`にはブロックを与えますが、わかりやすくするために単独で使っています。