[前][次][番号順一覧][スレッド一覧]

ruby-changes:73563

From: Jemma <ko1@a...>
Date: Thu, 15 Sep 2022 05:51:03 +0900 (JST)
Subject: [ruby-changes:73563] 513a11b477 (master): Add vm_ivar get, get_unitialized, and lazy_set benchmarks

https://git.ruby-lang.org/ruby.git/commit/?id=513a11b477

From 513a11b477bb334413452b6004bc7d2d0a3eed4f Mon Sep 17 00:00:00 2001
From: Jemma Issroff <jemmaissroff@g...>
Date: Wed, 14 Sep 2022 16:48:40 -0400
Subject: Add vm_ivar get, get_unitialized, and lazy_set benchmarks

---
 benchmark/vm_ivar_get.yml              | 37 ++++++++++++++++++++++++++++++++++
 benchmark/vm_ivar_get_unintialized.yml | 12 +++++++++++
 benchmark/vm_ivar_lazy_set.yml         | 12 +++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 benchmark/vm_ivar_get.yml
 create mode 100644 benchmark/vm_ivar_get_unintialized.yml
 create mode 100644 benchmark/vm_ivar_lazy_set.yml

diff --git a/benchmark/vm_ivar_get.yml b/benchmark/vm_ivar_get.yml
new file mode 100644
index 0000000000..8c64ffc77a
--- /dev/null
+++ b/benchmark/vm_ivar_get.yml
@@ -0,0 +1,37 @@ https://github.com/ruby/ruby/blob/trunk/benchmark/vm_ivar_get.yml#L1
+prelude: |
+  class Example
+      def initialize
+          @v0 = 1
+          @v1 = 2
+          @v3 = 3
+          @levar = 1
+      end
+
+      def get_value_loop
+          sum = 0
+
+          i = 0
+          while i < 1000000
+              # 10 times to de-emphasize loop overhead
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              sum += @levar
+              i += 1
+          end
+
+          return sum
+      end
+  end
+
+  obj = Example.new
+benchmark:
+  vm_ivar_get: |
+    obj.get_value_loop
+loop_count: 100
diff --git a/benchmark/vm_ivar_get_unintialized.yml b/benchmark/vm_ivar_get_unintialized.yml
new file mode 100644
index 0000000000..64db6a79a5
--- /dev/null
+++ b/benchmark/vm_ivar_get_unintialized.yml
@@ -0,0 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/benchmark/vm_ivar_get_unintialized.yml#L1
+prelude: |
+  class Example 
+    def read
+      @uninitialized
+    end
+  end
+
+  obj = Example.new
+benchmark:
+  vm_ivar_get_uninitialized: |
+    obj.read
+loop_count: 30000000
diff --git a/benchmark/vm_ivar_lazy_set.yml b/benchmark/vm_ivar_lazy_set.yml
new file mode 100644
index 0000000000..bbe42574e6
--- /dev/null
+++ b/benchmark/vm_ivar_lazy_set.yml
@@ -0,0 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/benchmark/vm_ivar_lazy_set.yml#L1
+prelude: |
+  class Example 
+    def lazy_set
+      @uninitialized ||= 123
+    end
+  end
+
+  objs = 10000000.times.map { Example.new }
+benchmark:
+  vm_ivar_lazy_set: |
+    objs.each(&:lazy_set)
+loop_count: 1
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]