ITmedia NEWS >
ニュース
» 2019年05月20日 18時00分 公開

Oracle Code Tokyo 2019:オラクル、「Java有償化という誤解」を解き、未来を語る (2/3)

[山崎潤一郎,ITmedia]

 サーブ氏の新機能紹介は、プレゼン資料と口頭によるものだったが、上記の中から「Project Panama」と「Project Loom」については、実際にデモが実施され、驚きの進化を垣間見ることができた。デモを行ったのは、Javaコミュニティでは知られた存在の、櫻庭祐一氏(First Java Champion in Japanの肩書)と吉田真也氏(Youngest OpenJDK Committerの肩書)の2人。

photo Java新機能をデモする櫻庭祐一氏(左)と吉田真也氏(右)

 写真に対しソフトフォーカス処理を実施するプログラムをProject PanamaにおけるVector API(ベクトル演算/命令をJavaから使うためのAPI)とProject LoomによるFibe処理で実行するデモが行われた。従来の画像処理は、1ピクセルごとに実行していたが、並列処理を実現するVector APIを投入することで複数のピクセルをまとめて処理することが可能になり、時間の短縮を実現している。

 上記の画像処理のリクエストをサーバで側で並列処理する場合、従来であれば、Javaのスレッドを使っていた。これだと、JavaのスレッドとOSのスレッドが1対1の関係性の中で処理される。するとOSのスレッドのオーバーヘッドがボトルネックとなり、処理の限界値を上げることができない。そこで、Java側から、Fiberという軽量スレッドを提供することで、パフォーマンスを最大化することが可能になるというのだ。

 複数の同じ数の写真を従来方式と新機能それぞれに、同時スタートで処理を行った結果、従来方式だと約81秒(写真左)かかっていたものが、Vector APIだと約20秒(写真右)で終えることができた。

photo 従来方式での処理(81.316秒)と比較すると新機能(20.457秒)は、約4倍の処理速度を実現している

 次に、画像処理を行うWebサービスを想定したデモでは、400人のユーザーが同時にリクエストを行った場合のサーバ側の処理の様子を見ることができた。それによると、従来方式だと216スレッドで、処理中のリクエスト数は約200にとどまる(写真左)が、新機能だと35のスレッドに対し、400のリクエスト(写真右)を同時に処理している様子がわかる。Fiberの面目躍如といったところだ。

photo 従来方式だと216スレッドで200リクエストの処理だが、新機能だと35のスレッドで400のリクエストを処理している

Copyright © ITmedia, Inc. All Rights Reserved.