Мой сценарий делает некую работу, в результате которой получается некий результат, который я хочу смотреть через элемент TextViewer модуля Curses::UI. Этих результатов может быть до 50 и более. Когда скажем в хеше есть 30 результатов который я хочу просмотреть, 1 по 15 просматривается без тормозов (PageUP/PageDown переключение, Ctrl+Q выход), но далее при переключении заметные тормоза. Ниже приведена тестовая модель кода: Код | #!/usr/bin/perl use strict; use warnings;
use Curses::UI;
# <VARS> my $req_num = 50; # кол-во запросов my %win; # окна -;) my %txt; # текст -;) my %tmp; # вспомогательный хеш my $data = 'A' x 4096; # </VARS>
$tmp{c} = 0;
my $cui = Curses::UI->new( -mouse_support => 0, -debug => 0, -clear_on_exit => 1 ); $win{0} = $cui->add(undef, "Window", -border => 1, -y => 1, -title => $win{0}, -width => 120, -height => 33, -centered => 1 );
foreach my $n(0..$req_num) { $txt{$n} = $win{0}->add( undef, "TextViewer", -text => "$n$data", -border => 1, -title => "Loop # $n" ); }
$cui->set_binding(\&next_win_res, "339"); $cui->set_binding(\&prev_win_res, "338"); $cui->set_binding( sub {exit 0;}, "\cQ");
$win{0}->focus(); $cui->mainloop();
### eof ###
sub next_win_res() { $tmp{c}++; $tmp{c} = 0 if $tmp{c} > $req_num-1; $txt{$tmp{c}}->focus; }
sub prev_win_res() { $tmp{c}--; $tmp{c} = $req_num-1 if $tmp{c} < 0; $txt{$tmp{c}}->focus; }
|
ps: можно ли избежать этих тормозов другой реализацией кода? или это хронически для этого модуля.
|