開発日記10:Java(処理時間計測)

今日は、
Java(お題)
お題の3と4をやりました。
こちら。
3.ファイルの中身を全て大文字に書き換える
4.処理時間をはかる(スリープ使用)

3に関しては、ファイルの場所を認識させ、認識したファイルを読み込み(リスト化)、リスト化したものを拡張forループで回しながら大文字に変換するメソッドを使って出力するといった至ってシンプルな処理で済んだ。
こんな感じ。

Path file = Paths.get(“ファイルのパス”);
try {
List<String> text = Files.readAllLines(file); // UTF-8
for (String str : text) {
String toUpperstr = str.toUpperCase();
System.out.println(“str:”+str);
System.out.println(“toUpperstr:”+toUpperstr);
}
} catch (IOException e) {
e.printStackTrace();
}

4に関しては、こんな感じで書いてみた。

キーボードで入力した数字(1~3)により計測単位(ミリ/マイクロ/ナノ)秒での計測が出来るコードで、
今回は試験的に、1秒スリープをかけることで約1秒の計測時間が得られるようにしている(本来はここに計測したい処理を書く)。

〇 気を付けたこと。
・入力チェックの実装(正規表現使用)。
⇒入力した値は半角数値の1~3のみを受け付けることとし、半角数値以外であればエラーメッセージ「半角数値で入力して下さい。」をコンソールに出力し、半角数値であっても1~3以外であれば「出力が出来ません。」をコンソールに出力。
・メソッドの抽出
⇒コードの構成として「メイン処理」「入力チェック」「ミリ秒計測」「マイクロ秒計測」「ナノ秒計測」とした。

〇 学んだこと。
・マイクロ秒はSystemクラスのnanoTimeメソッドの戻り値を1000倍してやれば取得できる。
・switch文のdefaultで、caseに該当しなかったときの処理を書ける。
・半角数値を表す正規表現(^[0-9]*$)
・計測時間を見たいときの処理方法

〇 お題4の課題。
・マジックナンバーを使わないで定数化する。
・「コンソールに出力」だと1パターンなので、例外処理を加えたり画面を作ったりしたい。
・currentTimeMillsは、OSによって処理時間にばらつきがあるとのこと。ここらへんの仕組みが良く分かっていないので調べる。
・ファイル読込処理のメソッドの速度の違いなど、より実用的な形で実際に計測をしてみる。
・全角数値の許容(今ははじいている)。

〇 全体的な課題。
・お題に関しては、1個1個でもっと深掘りしたいことはあるけど、まずは作ったお題10個を終わらせる。
・Railsの環境構築をしたので、実際に動くものを作ってみる。
・自社の勉強会(Java)で実施することを考える。
・外部の勉強会の参加準備(基本は自習により進めていく形式なので、やること考えたりとか)。

以上です。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA