シングルトン

以前に性能で問題が出たことがあった。
調べた結果、XMLファイルの読み込み処理が時間がかかっていることが判明。
ファイルを読みにいった際に毎回IOが発生していたためだ。


特に何も考えずに作られていたため当然といえば当然であり、当時はキャッシュさせたりみたいな方法も知らなかったため、非常に困った・・。
その時は仕方なく別のとこにいる有識者の人に意見を求めたところ、「頻繁に更新が入るファイルでない(読み取り専用)のであれば読み込んでメモリ上でキャッシュさせればいい」と意見をもらった。
「なるほど」と思ったもののやり方がさっぱりわからなかった。
そのあたりも教えてもらったのだがシングルトンパターンで実現すればいいということであった。


シングルトンの実装方法などはここでは割愛しますが、教えてもらったとおりに実装してみたところ性能が格段に向上。
それまで普通にコーディングして普通に処理することしか知らなかったし考えてなかったが、それを気に若干だがクラスとインスタンスやメモリに上がってるものが何かというのを意識して処理を作るようになれた。
Cとかやってた人にとってはメモリを意識したりとか普通のことかもしれないけど、JAVAから始めた人だとメモリとか意識してないでも処理ができちゃうため、いざこういう問題にぶつかると困る人は多いんじゃないかなぁと思う。


今となってはそんなことも知らずによく開発してたなと怒られるかもしれないところである。
むしろその時性能でひっかかっておいて良かったな〜と思う。
シングルトンだけでなくデザインパターンは今後も活用していきたい。