著者
立堀 道昭 鈴村 豊太郎 小野寺 民也
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.2, no.4, pp.1-12, 2009-08-28

ウェブ・アプリケーション開発では,通常 HTML テンプレートを用いてウェブページの表現部を背後にあるビジネスロジックやオブジェクトから分離するのが事実上の標準プログラミングモデルとなりつつある.本稿では,このテンプレートに基づくプログラミングにおける典型的な慣習に着目し,従来の実装形態とは大きく異なる実装を施したサーバ側テンプレート・エンジンである FlyingTemplate について述べる.FlyingTemplate では,既存のウェブ・アプリケーションのテンプレート・エンジンを置き換えることにより,ウェブサーバの負荷を,自動的に,かつ従来の自動分散機構より安全にクライアントに分担させることができる.FlyingTemplate では,HTML 文書をまるまる生成する代わりに,テンプレートのパラメータ値とクライアント側で動作するブートストラップのコードのみを含む骨子文書を生成する.ブートストラップコードはクライアント側用のテンプレート・エンジンとウェブページのテンプレートをそれぞれサーバから取り寄せることにより,ウェブブラウザのキャッシュを有効利用できる.実験として,SPECweb2005 の Banking アプリケーションをそのまま,テンプレート・エンジンのみ FlyingTemplate で置き換えたところ,キャッシュがよく当たるケースでは,1.6 倍から 2 倍のスループット向上がみられた.
著者
石崎 一明 川人 基弘 今野 和浩 安江 俊明 竹内 幹雄 小笠原 武史 菅沼 俊夫 小野寺 民也 小松 秀昭
出版者
一般社団法人電子情報通信学会
雑誌
電子情報通信学会技術研究報告. CPSY, コンピュータシステム (ISSN:09135685)
巻号頁・発行日
vol.99, no.252, pp.17-24, 1999-08-05
被引用文献数
1

Javaはプログラムの安全性のために、例外チェックやポインタを排除したオブジェクトへのアクセスなど、他の言語より大きなオーバヘッドを持つ。またプログラムの柔軟性を提供するために、型検査、動的なクラスリンク、オブジェクトを伴ったインスタンスメソッド呼び出し、を提供している。これらの特徴を失うことなくプログラムの性能を改善するためには、実行時にバイトコードからネイティブコードへコンパイルを行うJust-In-Time (JIT)コンパイラが必須である。本稿では、JITコンパイラへ実装した以下の最適化、定数伝搬、不要コードの除去、例外チェックの除去、共通部分式の除去、型検査の単純化、メソッド呼び出しのインライン展開、メソッド呼び出しの一意決定、について述べる。さらに、9つのプログラムの実行結果より、これらの最適化が効果的であることを示す。
著者
小野寺 民也
出版者
一般社団法人情報処理学会
雑誌
情報処理 (ISSN:04478053)
巻号頁・発行日
vol.38, no.4, pp.301-310, 1997-04-15
参考文献数
22
被引用文献数
7
著者
河内谷清久仁 古関 聰 小野寺 民也
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.44, no.15, pp.13-23, 2003-11-15
被引用文献数
1

Javaでは言語の性質上,オブジェクトに対するロック操作が頻繁に行われる.これを高速化することは,システム全体の性能向上に非常に重要である.オブジェクトがそれぞれどのスレッドにロックされているかに着目した調査を行ったところ,特定のスレッドにのみ頻繁にロックされているという「スレッド局所性」が見られることが分かった.この性質に着目し本論文では,各オブジェクトごとに特定のスレッドに「ロック予約」を与え,ロック処理を高速化する手法について述べる.予約を持っているスレッドは,従来よりも軽い処理でそのオブジェクトのロックを行える.具体的には,従来ロック処理に不可欠と考えられていたcompare_and_swapなどの不可分命令ではなく,単純なメモリアクセス命令でロックを獲得/解放できる.予約者以外のスレッドがロックを行った時点でロック予約が解除され,以後そのオブジェクトは従来の方式でロックが行われる.この予約ロック機構を,IBM Java VMとJITコンパイラに実装し,いくつかのベンチマークを走らせたところ,従来のロック手法に比べて最大で53%の性能向上が確認された.In Java execution, lock operations are performed very frequently to realize exclusive oper-ations among multiple threads. Therefore, accelerating the lock performance has been very important to execute Java-based applications faster. We investigated the lock behavior of Java programs, focusing on the relation of each object and threads acquiring the object's lock. It turned out that for many objects, the lock is acquired by only one thread specific to the object, even in multi-threaded Java programs. By utilizing the thread locality, this paper shows a novel ultra-fast locking technique for Java. The algorithm allows locks to be reserved for threads. When a thread attempts to acquire a lock, it can do without any atomic operation if the lock is reserved for the thread. Otherwise, it cancels the reservation and falls back to a conventional locking algorithm. We have implemented the lock reservation mechanism in IBM's production virtual machine and JIT compiler. The results show that it achieved performance improvements up to 53%.
著者
小野寺 民也
出版者
一般社団法人情報処理学会
雑誌
情報処理 (ISSN:04478053)
巻号頁・発行日
vol.35, no.11, pp.1020-1026, 1994-11-15
被引用文献数
2
著者
小野寺 民也 上村 務
雑誌
全国大会講演論文集
巻号頁・発行日
vol.41, pp.52-53, 1990-09-04

The popularity of C-based object-oriented programming(OOP) has grown in recent years. In particular, C++ is rapidly gaining acceptance by a large number of users.As these users accumulate experience, they have found certain common problems, which can be summarized as follows:・Iniracieble run-time errors. Major sources are type misinterpretation, illegal pointer dereferencing, and failure of storage management. The errors usually result in a segmentation fault, and disable even a debugger.・Long recompilalion time. More often, a slight mod ification to a source code causes a massive recompilation.・Limiled modularily and reusabilily.COB (C with OBjects) is a new object-oriented language, upward compatible with C, that is being devel oped at IBM's Tokyo Research Laboratory. The lan guage attempts to address the above problems by putting as much emphasis on facilitating programming activities as on the quality of the final object code. In particular,the following design goals have been set up.・Decreasing the number of error sources by providing safe language constructs and garbage collection.・Increasing the modularity of program components.・Maintaining compatibility with C.・Recovering good run-time performance by extesive optimizations in a completed program.