- PR -

ファイルの中の文字列検索の速度向上

投稿者投稿内容
kami
ベテラン
会議室デビュー日: 2004/08/21
投稿数: 95
お住まい・勤務地: 大手町
投稿日時: 2005-04-19 15:23
どうも、参照ありがとうございます。
今回ですね、情報処理の専門上がりでプログラマになりました。
その会社でログ検索ソフトを作成しています。
カードリーダーからログファイルが送られてくるのでそのファイル内で検索です。

が、ログ検索はできるのですが速度が全然です。
学生の頃は「動けばいい」だったので全然意識していない部分でした。

最近、ログの件数を1790件にしたところ検索時間に20分かかります。
(本来は一年分(18万件ほど)を検索する予定です。)

今回、私が作成したソースを載せようとおもいましたが、
行数がかなりですので、WebServerにアップしました。

http://www.freeprice.jp/kami/kekka.jsp
です。

よろしければ、DLしていただきご教授いただければと思います。

どうか、よろしくお願いいたします。
nekoyama
ベテラン
会議室デビュー日: 2005/03/12
投稿数: 71
投稿日時: 2005-04-19 15:47
Webアプリケーションだと、体感する処理速度に、APサーバ、ネットワーク等色々絡んできます。
このソースを単体で動作させても同じだけ処理時間がかかるのかどうか、切り分けしてみたのでしょうか。
kami
ベテラン
会議室デビュー日: 2004/08/21
投稿数: 95
お住まい・勤務地: 大手町
投稿日時: 2005-04-19 15:53
引用ーーーーーーーーーーーーーーーーーーーーーーーーー
Webアプリケーションだと、体感する処理速度に、APサーバ、ネットワーク等色々絡んできます。
このソースを単体で動作させても同じだけ処理時間がかかるのかどうか、切り分けしてみたのでしょうか。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
早速の返答ありがとうございます。

今回は自分が使用しているノートPCにApache、tomcatを入れて作成しています。
ので、APサーバ、ネットワーク帯域などなどは直接関係ないと思います。
(説明不足ですみません)
nekoyama
ベテラン
会議室デビュー日: 2005/03/12
投稿数: 71
投稿日時: 2005-04-19 16:05
ローカルで実行していた場合、ネットワーク帯域は関係ないとして、
Apache、Tomcat、他のAPでCPU、メモリ等システムリソースのを占有していたとしたら、
純粋にコードが悪いとは言い切れないですよね。
まず、Apache,Tomcatとかを停止させて、そのAPだけ単体で動作させて、
処理速度がどうなのかを計測してみたほうが良いでしょう。
kami
ベテラン
会議室デビュー日: 2004/08/21
投稿数: 95
お住まい・勤務地: 大手町
投稿日時: 2005-04-19 16:15
補足:今現在、Apache,tomcat,J2SE以外には何も入ってない状態です。
   あと、DBとしてMySQLが入ってます。

で、今回はWeb上での検索ということですのでApache,tomcatをとめてしまうと
Jspなので動作しません。
(と、いうかそれでしか実行方法をしりません。)

他に実行させる方法があるのでしたら教えていただければと思います。
kami
ベテラン
会議室デビュー日: 2004/08/21
投稿数: 95
お住まい・勤務地: 大手町
投稿日時: 2005-04-19 16:18
もうひとつ、同じスレッドをたててしまっていたようです。
申し訳ないです。
そちらに追記した情報をこちらにも追記いたします。

OS : WinXP SP2
WEB: Apache2
アプリ: Tomcat5.5

CPU: P4,2.8
メモリ: 512MB


ソースファイルの中の

io = 入退室
name = 氏名
nen1,tuki1,hi1 = 開始年月日
nen2,tuki2,hi2 = 終了年月日

です。

これは、結果表示ページの前の検索条件入力ページから入力された値を
いれておく変数です。

ソース自体、みずらくてすみません;;
nekoyama
ベテラン
会議室デビュー日: 2005/03/12
投稿数: 71
投稿日時: 2005-04-19 16:54

javaアプリケーションを単体で実行させるには、基本は以下のように書きます。

public class Test{
public static void main(String[] args){
//処理内容を実装
}
public Test(){
//処理内容を実装
}
}

J2EEでコーディングするにしても、J2SEは基本ですので、
機会があれば勉強してみた方がいいと思いますよ。

とくに、java.lang.*,java.io.*,java.util.*位は知っていたほうが良いでしょう。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2005-04-19 16:59
引用:

が、ログ検索はできるのですが速度が全然です。
学生の頃は「動けばいい」だったので全然意識していない部分でした。

最近、ログの件数を1790件にしたところ検索時間に20分かかります。
(本来は一年分(18万件ほど)を検索する予定です。)



ソースをざらっと見ただけなんですが、このプログラムは読み込んだログ1行毎に1行を画面に出力する仕様になっているように見えます……。

1800行もあるテーブルをHTMLに食わせるとUA(IEとか)は、その表示に非常に多くのリソース(CPUとかメモリとか時間とか)を必要とします。HTMLの出力部分を全部コメントアウトして処理だけを行わせた場合、すんなりと処理完了したりはしませんか?
#単純にサーバー側の処理で20分も待たせているのであれば、普通はUA側でタイムアウトにしてしまうと思います

スキルアップ/キャリアアップ(JOB@IT)