App-Chart

 view release on metacpan or  search on metacpan

lib/App/Chart/Gtk2/Diagnostics.pm  view on Meta::CPAN

      $str .= sprintf ("  %.1f Mb%s in %s\n",
                       $size/1e6,
                       $st->size > $size ? ' (sparse)' : '',
                       Glib::filename_display_name($filename));
    }
  }

  $str .= "\n";

  {
    my $count = (App::Chart::Series::Database->can('new')
                 ? keys %App::Chart::Series::Database::cache
                 : 'not loaded yet');
    $str .= "Cached series:     $count\n";
  }
  {
    my $count;
    if (! App::Chart::Latest->can('get')) {
      $count = 'not loaded yet';
    } elsif (my $t = tied %App::Chart::Latest::get_cache) {
      $count = scalar(keys %App::Chart::Latest::get_cache)
        . " of " . $t->{'max_count'};
    } else {
      $count = 'uninitialized';
    }
    $str .= "Cached latest LRU: $count\n";
  }
  $str .= "\n";

  # if BSD::Resource available, only selected info bits
  if (eval { require BSD::Resource; }) {
    my ($usertime, $systemtime,
        $maxrss, $ixrss, $idrss, $isrss, $minflt, $majflt, $nswap,
        $inblock, $oublock, $msgsnd, $msgrcv,
        $nsignals, $nvcsw, $nivcsw)
      = BSD::Resource::getrusage ();
    $str .= "getrusage (BSD::Resource)\n";
    $str .= "  user time:      $usertime (seconds)\n";
    $str .= "  system time:    $systemtime (seconds)\n";
    # linux kernel 2.6.22 doesn't give memory info
    if ($maxrss) { $str .= "  max resident:   $maxrss\n"; }
    if ($ixrss)  { $str .= "  shared mem:     $ixrss\n"; }
    if ($idrss)  { $str .= "  unshared mem:   $idrss\n"; }
    if ($isrss)  { $str .= "  unshared stack: $isrss\n"; }
    # linux kernel 2.4 didn't count context switches
    if ($nvcsw)  { $str .= "  voluntary yields:   $nvcsw\n"; }
    if ($nivcsw) { $str .= "  involuntary yields: $nivcsw\n"; }
  }
  $str .= "\n";

  if ($mallinfo) {
    $str .= "mallinfo (Devel::Mallinfo)\n" . hash_format ($mallinfo);
  } else {
    $str .= "(Devel::Mallinfo not available.)\n";
  }
  $str .= "\n";

  if (%mstats) {
    $str .= "mstat (Devel::Peek)\n" . hash_format (\%mstats);
  } else {
    $str .= "(Devel::Peek -- no mstat() in this perl)\n";
  }

  if (eval { require Devel::Arena; }) {
    $str .= "\n";
    my $stats = Devel::Arena::sv_stats();
    my $magic = $stats->{'magic'};
    $stats->{'magic'}  # mung to reduce verbosity
      = scalar(keys %$magic) . ' total '
        . List::Util::sum (map {$magic->{$_}->{'total'}} keys %$magic);
    $str .= "SV stats (Devel::Arena)\n" . hash_format ($stats);

    my $shared = Devel::Arena::shared_string_table_effectiveness();
    $str .= "Shared string effectiveness:\n" . hash_format ($shared);
  } else {
    $str .= "(Devel::Arena -- module not available)\n";
  }

  if (eval { require Devel::SawAmpersand; 1 }) {
    $str .= 'PL_sawampersand is '
      . (Devel::SawAmpersand::sawampersand()
         ? "true, which is bad!"
         : "false, good")
        . " (Devel::SawAmpersand)\n";
  } else {
    $str .= "(Devel::SawAmpersand -- module not available.)\n";
  }
  $str .= "\n";

  $str .= "Modules loaded: " . (scalar keys %INC) . "\n";
  {
    $str .= "Module versions:\n";
    my @modulenames = ('Gtk2',
                       'Glib',
                       'DBI',
                       'DBD::SQLite',
                       'LWP',
                       'Devel::Arena',
                       # 'Devel::Mallinfo',
                       'Devel::Peek',
                       'Devel::StackTrace',
                       'Gtk2::Ex::Datasheet::DBI',
                       # 'Gtk2::Ex::NoShrink',
                       'Gtk2::Ex::TickerView',
                       'HTML::TableExtract',
                       'Number::Format',
                       'Set::IntSpan::Fast',
                       ['Compress::Raw::Zlib', 'ZLIB_VERSION'],
                       ['Finance::TA', 'TA_GetVersionString'],
                       # no apparent version number in geniustrader
                      );
    my $width = max (map {length} @modulenames);
    $str .= sprintf ("  %-*s%s\n", $width+2, 'Perl', $^V);
    foreach my $modulename (@modulenames) {
      my $funcname;
      if (ref($modulename)) {
        ($modulename,$funcname) = @$modulename;
      }
      my $version = $modulename->VERSION;
      if (defined $version && defined $funcname) {
        my $func = $modulename->can($funcname);



( run in 2.162 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )