Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- #region timer
- var _time:int
- func time_start():
- _time = Time.get_ticks_usec()
- func time_stop(prefix = ""):
- var parse = func(s: String, is_reverse: bool) -> String:
- if is_reverse:
- s = s.reverse()
- var r = []
- for i in s.length():
- if i % 3 == 0 and i != 0:
- r.append("_")
- r.append(s[i])
- if is_reverse:
- r.reverse()
- return "".join(r)
- var t = str(float(Time.get_ticks_usec() - _time) / 1_000_000)
- if t == "0":
- t += ".0"
- t = t.split(".")
- return prefix + ": " + parse.call(t[0], true) + "." + parse.call(t[1], false)
- #endregion
- var once := 0
- var count := 100_000
- var sizeArr := 50
- var keyDel := [12, 24, 9, 15, 21]
- var list : Array[int]
- func _ready() -> void:
- for i in sizeArr:
- list.append(i)
- func _process(_delta: float) -> void:
- once += 1
- if once == 120:
- pass
- testRawRemove()
- testSwap()
- info()
- func info():
- print()
- print("Кол-во итераций: {0}".format([count]))
- print("Размер массива: {0}".format([sizeArr]))
- class SwapRemover:
- var _size: int
- var _arr: Array
- func setup(arr: Array):
- _arr = arr
- _size = arr.size()
- func remove(index: int) -> void:
- _size -= 1
- _arr[index] = _arr[_size]
- func add(value: int):
- if _size < _arr.size():
- _arr[_size] = value
- else:
- _arr.append(value)
- _size += 1
- func testRawRemove():
- var arr := list.duplicate()
- time_start()
- for i in count:
- for k in keyDel.size():
- arr.remove_at(keyDel[k])
- arr.append(keyDel[k])
- print(time_stop("RAW_REMOVE\t"))
- func testSwap():
- var arr := SwapRemover.new()
- arr.setup(list.duplicate())
- time_start()
- for i in count:
- for k in keyDel.size():
- arr.remove(keyDel[k])
- arr.add(keyDel[k])
- print(time_stop("SWAP\t\t"))
Advertisement
Add Comment
Please, Sign In to add comment