Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #warning-ignore-all:unused_argument
- #warning-ignore-all:return_value_discarded
- #warning-ignore-all:unused_variable
- tool
- extends EditorScript
- var list:Array = []
- var dict_int:Dictionary = {}
- var dict:Dictionary = {}
- var dict_large:Dictionary = {}
- func deci_to_str(deci:float) -> String:
- var split = str(deci).split(".")
- if deci == 0.0:
- split = ["0","0"]
- while split[0].length() < 4:
- split[0] = " " + split[0]
- while split[1].length() < 6:
- split[1] = split[1] + "0"
- return split[0] + "." + split[1]
- func _run():
- print("\r")
- for i in range(20):
- list.append(str(i)+"_"+str(i))
- for i in range(20):
- dict_int[i] = str(i)+"_"+str(i)
- for i in range(20):
- dict[str(i)] = str(i)+"_"+str(i)
- for i in range(500):
- dict_large[str(i)] = str(i)+"_"+str(i)
- var bi = BasicIndexing.new()
- var results:Array = []
- var pass_time:float = 0.0
- for m in bi.get_method_list():
- var m_name:String = m.name
- if m_name.begins_with("bench"):
- var time = bi.call(m_name)
- results.append( {"time":time, "funcname":m_name} )
- if m_name == "bench_pass":
- pass_time = time
- results.sort_custom(self, "results_sort")
- prints("pass", pass_time)
- for res in results:
- prints( "Completed( %s ) %s" % [deci_to_str(res["time"]-pass_time), res["funcname"]] )
- static func results_sort(a, b):
- if a["time"] > b["time"]:
- return true
- class BasicIndexing:
- var run_times:int = 10_000#500000
- enum Numbers {
- ONE = 1
- TWO = 2
- THREE = 3
- FOUR = 4
- FIVE = 5
- }
- const FIVE:int = 5
- var five:int = 5
- var list:Array = []
- var dict_int:Dictionary = {}
- var dict:Dictionary = {}
- func _init():
- for i in range(20):
- list.append(str(i)+"_"+str(i))
- for i in range(20):
- dict_int[i] = str(i)+"_"+str(i)
- for i in range(20):
- dict[str(i)] = str(i)+"_"+str(i)
- func func_assign() -> void:
- var a = 0
- func func_pass() -> void:
- pass
- func bench_func_assign() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- func_assign()
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_func_pass() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- func_pass()
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_dict_access() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = dict["5"]
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_enum_access() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = Numbers.FIVE
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_dict_int_access() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = dict_int[5]
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_list_const_access() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = list[FIVE]
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_list_access() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = list[5]
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_add_vars() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = five + five
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_const() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = FIVE
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_var() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = five
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_add() -> float:
- var accum = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = 5 + 5
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_assign() -> float:
- var accum:float = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- var a = 0
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
- func bench_pass() -> float:
- var accum:float = 0.0
- for _i in range(run_times):
- var start = OS.get_ticks_usec()
- for _j in range(1000):
- pass
- var end = OS.get_ticks_usec()
- accum += end-start
- return accum/float(run_times)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement