ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Sergey Vlasov <vsu@mivlgu.murom.ru>
To: mandrake-russian@altlinux.ru
Subject: Re: [mdk-re] About Mutt
Date: Sat Apr  7 23:12:12 2001
Message-ID: <20010407231113.2ed6f580.vsu@mivlgu.murom.ru> (raw)
In-Reply-To: <20010407105041.54dab25f._troggy_@mtu-net.ru>

On Sat, 7 Apr 2001 10:50:41 +0400
Pavel Marakhovsky <_troggy_@mtu-net.ru> wrote:

> On Sat, 7 Apr 2001 11:23:59 +0600
> Igor Solovyov <is13@inbox.ru> wrote:
> 
> > Hi!
> > On Sat, 7 Apr 2001 07:41:48 +0400
> > Yura Zotov <yz-news@mail.ru> wrote:
> > 
> > > Решил я окончательно и бесповоротно переехать на Mutt, так как
> падучесть
> > > Stuphead уже достала. Впечатление от Mutt очень хорошее. Но вот один
> > 
> > А Sylpheed не пробовали?
> 
> Согласен.... Sylpheed получше будет.... Только вот никто не знает как
> заставить его быстрее работать
> с большим кол-вом сообщений (ALTLinux/Mandrake - 13051), а то и при
> чтении из mbox и при заходе
> в папку сортирует, и это как-то очень долго... несколько минут точно...

Первый раз слышу жалобы, что Sylpheed работает медленно. Вы Mahogany видели? Вот это уж тормоз так тормоз :-)

Но тем не менее напустил на Sylpheed -pg и gprof. Вот верхушка получившейся статистики (просто попеременно открывались две папки, в одной порядка 3400 сообщений):

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  us/call  us/call  name    
 41.56     13.13    13.13                             __mcount_internal
  9.69     16.19     3.06   770262     3.97     3.97  read
  9.09     19.06     2.87                             g_list_position
  3.67     20.22     1.16                             mcount
  1.99     20.85     0.63    70560     8.93    27.80  procmsg_write_cache
  1.87     21.44     0.59  1540231     0.38     0.66  _IO_new_file_xsputn
  1.77     22.00     0.56                             gtk_ctree_link
  1.68     22.53     0.53   107395     4.94    10.71  vfprintf
  1.27     22.93     0.40                             set_cell_contents
  1.14     23.29     0.36   459393     0.78     0.78  strcpy
  1.14     23.65     0.36     5550    64.86    64.86  write
  1.14     24.01     0.36                             gtk_type_is_a
  1.04     24.34     0.33  1538540     0.21     0.95  fwrite
  1.01     24.66     0.32   481769     0.66     0.71  chunk_alloc
  0.89     24.94     0.28                             g_str_hash
  0.76     25.18     0.24   473716     0.51     0.51  chunk_free
  0.73     25.41     0.23   769322     0.30     4.52  _IO_file_xsgetn
  0.66     25.62     0.21   443528     0.47     1.18  malloc
  0.63     25.82     0.20                             g_strdup
  0.60     26.01     0.19   769371     0.25     4.22  _IO_file_read
  0.60     26.20     0.19   769319     0.25     4.94  fread

Явный перебор с read(); такое впечатление, что буферизация отсутствует начисто (см. число fread в конце куска). После наложения прилагаемого патча (для 0.4.63cvs15, но, может быть, пойдет и на старых версиях - вроде бы это место не менялось) ситуация следующая:

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  us/call  us/call  name    
 38.97      9.17     9.17                             __mcount_internal
  9.94     11.51     2.34                             g_list_position
  4.08     12.47     0.96                             mcount
  2.76     13.12     0.65                             gtk_ctree_link
  2.55     13.72     0.60    96770     6.20    12.14  vfprintf
  2.38     14.28     0.56    63504     8.82    28.24  procmsg_write_cache
  1.91     14.73     0.45    65566     6.86     6.86  read
  1.87     15.17     0.44  1386377     0.32     0.63  _IO_new_file_xsputn
  1.66     15.56     0.39     4995    78.08    78.08  write
  1.57     15.93     0.37  1384686     0.27     0.98  fwrite
  1.53     16.29     0.36                             set_cell_contents
  1.40     16.62     0.33                             gtk_type_is_a
  1.27     16.92     0.30   414076     0.72     0.72  strcpy

Буферизация заработала. Это может быть проблемой glibc (у меня 2.1.3), так что, возможно, на glinc 2.2 это уже не требуется. После добавления setvbuf() у меня время работы mh_get_msg_list на этой папке сократилось с 0.51 с до 0.24 с. Но это, к сожалению, не вся проблема.

Чтобы не мешали всякие mcount, вот результаты для случая, когда -pg используется только в main.c:

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
 18.35      6.06     6.06                             g_list_position
  5.63      7.92     1.86                             gtk_ctree_link
  4.90      9.54     1.62                             procmsg_write_cache
  4.63     11.07     1.53                             read
  3.88     12.35     1.28                             vfprintf
  3.30     13.44     1.09                             _IO_new_file_xsputn
  3.09     14.46     1.02                             gtk_type_is_a
  2.91     15.42     0.96                             write
  2.47     16.23     0.81                             fwrite
  2.12     16.93     0.70                             set_cell_contents
  1.85     17.55     0.61                             chunk_alloc

Таким образом, в лидерах с большим отрывом g_list_position и gtk_ctree_link. Посмотрев на исходник gtk_ctree_linк, нетрудно выяснить и причину - алгоритм с кучей последовательных поисков, O(N**2) (причем как раз случай вставки в конец самый плохой). g_list_position, похоже, тоже оттуда (лень было перебирать gtk с -pg, чтобы убедиться точно, но скорее всего все в GtkCTree).

Так что проблема в GTK+ :-(((



  reply	other threads:[~2001-04-07 23:12 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-07  7:42 Yura Zotov
2001-04-07  9:25 ` Igor Solovyov
2001-04-07 10:52   ` Pavel Marakhovsky
2001-04-07 23:12     ` Sergey Vlasov [this message]
2001-04-07 23:40       ` Aleksandr Blohin
2001-04-07 23:54         ` Sergey Vlasov
2001-04-08  0:02           ` Aleksandr Blohin
2001-04-07 23:47       ` [mdk-re] About Sylpheed Sergey Vlasov
2001-04-08  8:49         ` Pavel Marakhovsky
2001-04-08 12:00           ` Sergey Vlasov
2001-04-08 14:40             ` Sergey S. Skulachenko
2001-04-08 14:55               ` Sergey Vlasov
2001-04-08 17:21                 ` Sergey S. Skulachenko
2001-04-09  8:01           ` Aleksey Novodvorsky
2001-04-09 19:36             ` Pavel Marakhovsky
2001-04-08  0:08       ` [mdk-re] About Mutt Ivan Zakharyaschev
2001-04-08 13:32         ` Sergey Vlasov
2001-04-13 10:12         ` Mikhail Zabaluev
2001-04-14  0:19           ` imap; was: " Ivan Zakharyaschev
2001-04-14  0:32             ` Ivan Zakharyaschev
2001-04-18  0:30             ` Mikhail Zabaluev
2001-04-18 10:47               ` Sergei Aranovsky
2001-04-07 15:42   ` Yura Zotov
2001-04-07 17:51     ` Aleksey Novodvorsky
2001-04-07 18:57       ` Yura Zotov
2001-04-07 19:50         ` Aleksey Novodvorsky
2001-04-07 20:10           ` Yura Zotov
2001-04-07 20:46             ` Aleksey Novodvorsky
2001-04-09 10:38               ` Yuri Ryazantsev
2001-04-09 11:21                 ` Aleksey Novodvorsky
2001-04-07 12:21 ` Alexey Voinov
2001-04-07 14:24 ` S. Budnevitch
2001-04-08  0:43 ` Owl
2001-04-08  2:30   ` Aleksandr Blohin
2001-04-08  4:00     ` Yura Zotov
2001-04-08 13:18       ` Owl
2001-04-08 13:21       ` Aleksandr Blohin
2001-04-08 18:56         ` Owl
2001-04-09  7:51     ` Aleksey Novodvorsky
2001-04-09 11:49       ` Aleksandr Blohin
2001-04-09 12:31           ` Aleksandr Blohin
2001-04-09 13:07             ` Aleksey Novodvorsky
2001-04-09 13:16               ` Aleksandr Blohin
2001-04-09 21:01               ` [mdk-re] ÐÁÎÅÌØ ÚÁÄÁÞ × çÎÏÍÅ Michael Bykov
2001-04-10  8:12                 ` [mdk-re] Re: [mdk-re] панель задач в Гноме Sergey Krivulja
2001-04-11 13:36               ` [mdk-re] About Mutt Aleksandr Blohin
2001-04-09 20:19           ` Owl
2001-04-09 20:45             ` Roman S
2001-04-09 21:21             ` Dmitry V. Levin
2001-04-10 14:31             ` Aleksey Novodvorsky
2001-04-10 16:52               ` Aleksey Novodvorsky
2001-04-09 12:26 ` Dmitry V. Levin
2001-04-09 17:25   ` Yura Zotov
2001-04-09 17:42     ` Dmitry V. Levin
2001-04-13 11:56   ` Mikhail Zabaluev
2001-04-13 12:11     ` Yura Zotov
2001-04-14  0:25       ` konsole maps; was: " Ivan Zakharyaschev
2001-04-14  2:00         ` Yura Zotov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20010407231113.2ed6f580.vsu@mivlgu.murom.ru \
    --to=vsu@mivlgu.murom.ru \
    --cc=mandrake-russian@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git