2012-05-29 3 views
0

В настоящее время я работаю над некоторым рефакторингом большого приложения под управлением Git. Я хочу иметь возможность сравнивать мои измененные функции между моей веткой мастера и моей нестабильной ветвью.Benchmarking Perl-функция между ветвями Git

В настоящее время я имею в виду сделать простой сценарий, как:

use Benchmark qw(:all) ; 
use my_module ; 

$count = -10 

# Checkout my master code 
system qw(git checkout <my_currently_in_production_version>) ; 

timethis($count, sub {my_function()}); 

# Checkout my unstable code 
system qw(git checkout <my_currently_unstable_version>) ; 

something_to_reload_my_module(); 

timethis($count, sub {my_function()}); 

Но он чувствует себя вид хак мне. Есть ли более чистые решения для контрольных функций между филиалами Git?

Спасибо за любую помощь

Edit: Я в основном ищу что-то вроде Benchmark модуля, но с поддержкой смены филиала, если оно существует.

ответ

2

Ну, вам нужно проверить каждую версию, но я бы не попытался «разгрузить» что-либо. Это просто просит неприятностей. Это означает, что нужно запустить два интерпретатора Perl: один для старого кода и один для нового кода.

Что бы я сделал, это написать сценарий, который выполняет соответствующие тайминги и сохраняет результаты в файле. Запустите его на обеих проверках. Попробуйте второй скрипт сравнить результаты.

git checkout stable 
../tools/time_test > stable 
git checkout unstable 
../tools/time_test > unstable 
compare_times stable unstable 

(Первые четыре строки может быть сделано с помощью compare_timessystem.)

+0

Это действительно может быть безопаснее, чем перезагрузки кода. Но я в основном смотрю на модульное решение (например, с помощью Benchmark с возможностью переключения ветки). Если я не найду другого решения, вы ответите. Спасибо. – Mayeu