❤ 0 Si vous développez un script, il est souvent très utile de favoriser certaines structures afin d'éviter de gaspiller trop de ressources sur une opération. Afin de savoir quelles méthodes ou structures sont meilleures, et ceci sans inclure une immense classe Benchmark qui propose beaucoup trop d'options et de précision pour les besoins de simples codeurs de RPG Maker, j'ai crée une classe Performance. Elle est très simple à utiliser.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| class Performance
def self.check(test_name, n = 20000)
if block_given?
t = Time.now
n.times do
yield
end
@@tests[test_name] = Time.now - t
end
end
def self.report(msg = '')
@@tests = {}
yield if block_given?
@@tests.sort! {|i, j| i[1] <=> j[1] }
@@tests.each_pair do |i, j|
msg << "#{i} => #{j}\n"
end
p msg
end
def self.clear
@@tests.clear
end
end |
Vous n'avez qu'à écrire votre test ainsi:
1
2
3
4
5
6
7
8
9
10
| Performance.report do
a = ''
Performance.check('test 1') do
a << 'b'
end
a.clear
Performance.check('test 2') do
a += 'b'
end
end |
Résultats:
Citation: test1 => 0.016
test2 => 0.812 |
Le résultat est du test le plus rapide au plus lent. Il est possible de modifier le nombre de fois qu'un bloc est executé (par défaut 20000) en ajoutant le nombre après le nom du test. Vous pouvez faire autant de tests que vous voulez, aussi complexes que vous voulez:
1
2
3
4
5
6
7
8
9
10
11
12
| a = 'anana:abobd:234:fuuu:2'
Performance.report do
Performance.check('alpha') do
! (a =~ /bd:3|furr/).nil?
end
Performance.check('beta') do
a === /bd:3|furr/
end
Performance.check('omega') do
a.include?('bd:3') || a.include?('furr')
end
end |
Résultats:
Citation: beta => 0.016
omega => 0.047
alpha => 0.062 |
Pour réinitialiser les résultats en mémoire, il suffit d'appeler:
C'est tout ! Bon scripting.
|