Help us understand the problem. What is going on with this article?

【Java】リフレクションは本当に重いのか?性能比較

目的

基底クラスを作成する際にリフレクションを利用したいと思ったが、リフレクションは重いという情報が頭にあったため、本当に重いのか?どのくらい重いのかについて知りたくなったため実際に計測する。

検証環境

  • Eclipse Oxygen.3a Release (4.7.3a)
  • Java8

検証用ソースコード

1.通常のインスタンス生成

qiita.java
private static Oimo getInstance01() throws Exception {
    return new Oimo();
}

2.リフレクションを使用したインスタンス生成

qiita.java
private static Oimo getInstance02() throws Exception {
    Class<?> clazz = Class.forName("kensho01.Oimo");
    return (Oimo) clazz.newInstance();
}

実施手順

  • 検証用ソースコードを使用して100,000回インスタンス生成を行い、それぞれ3回計測することで平均時間を算出する。小数第3位を四捨五入する。

実施結果

1.通常のインスタンス生成

  • 1回目:4ミリ秒
  • 2回目:3ミリ秒
  • 3回目:3ミリ秒
  • 平均:3.33ミリ秒

2.リフレクションを使用したインスタンス生成

  • 1回目:63ミリ秒
  • 2回目:69ミリ秒
  • 3回目:65ミリ秒
  • 平均:65.67ミリ秒

考察

通常のインスタンス生成が平均3.33ミリ秒に対して、リフレクションを使用したインスタンス生成では平均65.67ミリ秒掛かっており、約20倍の時間が掛かっていることが分かる。このことから確かにリフレクションを使用したインスタンス生成は重く、テストコードは別として、プロダクトのソースコードに対しての使用は極力避けるべきものであることが分かった。

ではまた(^_^)ノシ

etoumasaaki
客先常駐を中心にソフトウェアエンジニアやってます(._.) システム開発歴:9年(Java:7年、VB:2年) システム運用歴:3年(RHEL、AIX、Solaris) 家事育児と仕事の両立に頭を悩ましているワーパパですᕦ(ò_óˇ)ᕤ 【note】 https://note.com/masaaki1207
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした