javaで開発中の開発初心者です。
疑問に思ったことがあるので、ご存知の方いらっしゃいましたら教えてください。
複数のフォルダパスを取得する際に、設定ファイルにフルパスを記述して毎回設定ファイルを読み込むのと、
ルートパスのみ設定ファイルに記述し、ルートパスから文字列連結してフォルダパスを作るのでは処理速度としてどちらが早いのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ご質問の趣旨とは少し違ってしまいますが、java.io.File
やjava.nio.file.Path
あたりを使うことは想定されていないのでしょうか?
これらのAPIを使うことで、ある程度は、プラットフォームの違いを意識せずにパスを処理することができます。Windowsでもパス区切りを/
で書けたりとか、相対パスを解決したりとかできます。
ただし、全く意識しないわけには行きません。例えば、Windowsのドライブレターなど。
文字列の結合に比べるとパフォーマンスは多少下がりますが、面倒な処理や間違いを減らせるかも知れません。
参考リンク:
java.io.File
- Java SE 8 API ドキュメント
http://docs.oracle.com/javase/jp/8/api/java/io/File.html
java.nio.file.Path
- Java SE 8 API ドキュメント
http://docs.oracle.com/javase/jp/8/api/java/nio/file/Path.html
投稿2015/12/11 06:55
総合スコア9390
0
ケースによると思います。
絶対ごっちってのはないです。
上記時間計測コードを使って実際にやってみるのをおすすめします。
投稿2015/12/11 01:51
総合スコア801
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Javaに限って言うと、パスの連結という処理は避けたいです。
なぜかというと、標準ライブラリに「パスを連結する」というメソッドが用意されていないから。
文字列だから連結するのに標準メソッドなんか必要ないのではと思われますか? 文字列を連結するのに、Windows環境なら''で、POSIX環境なら'/'で連結する、と場合分けしないといけなくなります。
(「どうせLinuxでしか動かさないから」という前提はあるかもしれませんが、いつ顧客から移植を要求されるかわかりませんし、前提を知らない後任者がWindows環境で動かそうとして謎の誤動作に悩まされることもあるでしょう)
そういう環境依存のデータは外出しにしてしまうのがトラブルを避ける知恵となります。
Javaでなく.NET Frameworkだとパスを操作する標準クラスが用意されていて、ちょっと事情が変わってくるんですけどね。
投稿2015/12/11 01:04
総合スコア5568
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/11 03:08 編集
2015/12/11 06:25
0
こういうのは質問サイトに投稿するより自分でやった方が早いです。
Java
1long start = System.currentTimeMillis(); 2 3// 適当に10000回くらい繰り返す 4for(int i = 0; i < 10000; i++){ 5 //計測する処理 6} 7 8long end = System.currentTimeMillis(); 9System.out.println((end - start) + "ms");
投稿2015/12/11 01:01
総合スコア1507
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。