Advertisement
BlazeTheStar

GdScript Benchmark Basic1

Feb 1st, 2022
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #warning-ignore-all:unused_argument
  2. #warning-ignore-all:return_value_discarded
  3. #warning-ignore-all:unused_variable
  4. tool
  5. extends EditorScript
  6.  
  7. var list:Array = []
  8. var dict_int:Dictionary = {}
  9. var dict:Dictionary = {}
  10. var dict_large:Dictionary = {}
  11.  
  12. func deci_to_str(deci:float) -> String:
  13.     var split = str(deci).split(".")
  14.     if deci == 0.0:
  15.         split = ["0","0"]
  16.     while split[0].length() < 4:
  17.         split[0] = " " + split[0]
  18.     while split[1].length() < 6:
  19.         split[1] = split[1] + "0"
  20.  
  21.     return split[0] + "." + split[1]
  22.  
  23. func _run():
  24.     print("\r")
  25.  
  26.     for i in range(20):
  27.         list.append(str(i)+"_"+str(i))
  28.     for i in range(20):
  29.         dict_int[i] = str(i)+"_"+str(i)
  30.     for i in range(20):
  31.         dict[str(i)] = str(i)+"_"+str(i)
  32.     for i in range(500):
  33.         dict_large[str(i)] = str(i)+"_"+str(i)
  34.  
  35.     var bi = BasicIndexing.new()
  36.     var results:Array = []
  37.     var pass_time:float = 0.0
  38.     for m in bi.get_method_list():
  39.         var m_name:String = m.name
  40.         if m_name.begins_with("bench"):
  41.             var time = bi.call(m_name)
  42.             results.append( {"time":time, "funcname":m_name} )
  43.             if m_name == "bench_pass":
  44.                 pass_time = time
  45.  
  46.     results.sort_custom(self, "results_sort")
  47.     prints("pass", pass_time)
  48.     for res in results:
  49.         prints( "Completed( %s ) %s" % [deci_to_str(res["time"]-pass_time), res["funcname"]] )
  50.  
  51.  
  52.  
  53. static func results_sort(a, b):
  54.     if a["time"] > b["time"]:
  55.         return true
  56.  
  57. class BasicIndexing:
  58.  
  59.     var run_times:int = 10_000#500000
  60.  
  61.     enum Numbers {
  62.         ONE = 1
  63.         TWO = 2
  64.         THREE = 3
  65.         FOUR = 4
  66.         FIVE = 5
  67.     }
  68.     const FIVE:int = 5
  69.     var five:int = 5
  70.  
  71.     var list:Array = []
  72.     var dict_int:Dictionary = {}
  73.     var dict:Dictionary = {}
  74.  
  75.     func _init():
  76.         for i in range(20):
  77.             list.append(str(i)+"_"+str(i))
  78.         for i in range(20):
  79.             dict_int[i] = str(i)+"_"+str(i)
  80.         for i in range(20):
  81.             dict[str(i)] = str(i)+"_"+str(i)
  82.  
  83.     func func_assign() -> void:
  84.         var a = 0
  85.     func func_pass() -> void:
  86.         pass
  87.  
  88.     func bench_func_assign() -> float:
  89.         var accum = 0.0
  90.         for _i in range(run_times):
  91.             var start = OS.get_ticks_usec()
  92.             for _j in range(1000):
  93.                 func_assign()
  94.             var end = OS.get_ticks_usec()
  95.             accum += end-start
  96.  
  97.         return accum/float(run_times)
  98.  
  99.     func bench_func_pass() -> float:
  100.         var accum = 0.0
  101.         for _i in range(run_times):
  102.             var start = OS.get_ticks_usec()
  103.             for _j in range(1000):
  104.                 func_pass()
  105.             var end = OS.get_ticks_usec()
  106.             accum += end-start
  107.  
  108.         return accum/float(run_times)
  109.  
  110.     func bench_dict_access() -> float:
  111.         var accum = 0.0
  112.         for _i in range(run_times):
  113.             var start = OS.get_ticks_usec()
  114.             for _j in range(1000):
  115.                 var a = dict["5"]
  116.             var end = OS.get_ticks_usec()
  117.             accum += end-start
  118.  
  119.         return accum/float(run_times)
  120.  
  121.     func bench_enum_access() -> float:
  122.         var accum = 0.0
  123.         for _i in range(run_times):
  124.             var start = OS.get_ticks_usec()
  125.             for _j in range(1000):
  126.                 var a = Numbers.FIVE
  127.             var end = OS.get_ticks_usec()
  128.             accum += end-start
  129.  
  130.         return accum/float(run_times)
  131.  
  132.     func bench_dict_int_access() -> float:
  133.         var accum = 0.0
  134.         for _i in range(run_times):
  135.             var start = OS.get_ticks_usec()
  136.             for _j in range(1000):
  137.                 var a = dict_int[5]
  138.             var end = OS.get_ticks_usec()
  139.             accum += end-start
  140.  
  141.         return accum/float(run_times)
  142.  
  143.     func bench_list_const_access() -> float:
  144.         var accum = 0.0
  145.         for _i in range(run_times):
  146.             var start = OS.get_ticks_usec()
  147.             for _j in range(1000):
  148.                 var a = list[FIVE]
  149.             var end = OS.get_ticks_usec()
  150.             accum += end-start
  151.  
  152.         return accum/float(run_times)
  153.  
  154.     func bench_list_access() -> float:
  155.         var accum = 0.0
  156.         for _i in range(run_times):
  157.             var start = OS.get_ticks_usec()
  158.             for _j in range(1000):
  159.                 var a = list[5]
  160.             var end = OS.get_ticks_usec()
  161.             accum += end-start
  162.  
  163.         return accum/float(run_times)
  164.  
  165.     func bench_add_vars() -> float:
  166.         var accum = 0.0
  167.         for _i in range(run_times):
  168.             var start = OS.get_ticks_usec()
  169.             for _j in range(1000):
  170.                 var a = five + five
  171.             var end = OS.get_ticks_usec()
  172.             accum += end-start
  173.  
  174.         return accum/float(run_times)
  175.  
  176.     func bench_const() -> float:
  177.         var accum = 0.0
  178.         for _i in range(run_times):
  179.             var start = OS.get_ticks_usec()
  180.             for _j in range(1000):
  181.                 var a = FIVE
  182.             var end = OS.get_ticks_usec()
  183.             accum += end-start
  184.  
  185.         return accum/float(run_times)
  186.  
  187.     func bench_var() -> float:
  188.         var accum = 0.0
  189.         for _i in range(run_times):
  190.             var start = OS.get_ticks_usec()
  191.             for _j in range(1000):
  192.                 var a = five
  193.             var end = OS.get_ticks_usec()
  194.             accum += end-start
  195.  
  196.         return accum/float(run_times)
  197.  
  198.     func bench_add() -> float:
  199.         var accum = 0.0
  200.         for _i in range(run_times):
  201.             var start = OS.get_ticks_usec()
  202.             for _j in range(1000):
  203.                 var a = 5 + 5
  204.             var end = OS.get_ticks_usec()
  205.             accum += end-start
  206.  
  207.         return accum/float(run_times)
  208.  
  209.     func bench_assign() -> float:
  210.         var accum:float = 0.0
  211.         for _i in range(run_times):
  212.             var start = OS.get_ticks_usec()
  213.             for _j in range(1000):
  214.                 var a = 0
  215.             var end = OS.get_ticks_usec()
  216.             accum += end-start
  217.  
  218.         return accum/float(run_times)
  219.  
  220.     func bench_pass() -> float:
  221.         var accum:float = 0.0
  222.         for _i in range(run_times):
  223.             var start = OS.get_ticks_usec()
  224.             for _j in range(1000):
  225.                 pass
  226.             var end = OS.get_ticks_usec()
  227.             accum += end-start
  228.  
  229.         return accum/float(run_times)
  230.  
  231.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement