Gauche > Archives > 2013/07/19

2013/07/19 06:59:24 UTC(び)
#
--- a/doc/modutil.texi
+++ b/doc/modutil.texi
@@ -7222,14 +7222,13 @@ value of @var{line-width} is 76, as specified in RFC2045
 RFC2045に従い76となっています。@var{line-width}に@code{#f}または@code{0}
 を与えることで改行を抑制することができます。
 @c COMMON
-@item url-safe?
 @c EN
-If a true value is given, the input bytes will be encoded with an
+If a true value is given as @var{url-safe?}, the input bytes will be encoded wi
 alternative encoding table, which substitutes @code{+} instead of
 @code{-} and @code{/} instead of @code{_}. The result will contain
 filename and url safe characters only. Default is false.
 @c JP
-真の値を与えると、標準の Base64 と異なったエンコーディングテーブルを使って
+@var{url-safe?} として真の値を与えると、標準の Base64 と異なったエンコーディン
 入力をエンコードします。このエンコーディングでは、@code{+}の代わりに
 @code{-}が、@code{/}の代わりに@code{_}が使われます。このエンコーディングは
 ファイル名やURLの一部として使うのに適しています。
#
makeinfoに怒られたので。ひょっとして俺が使ってるmakeinfoが悪いのかな?
2013/07/19 08:44:51 UTCshiro
#
うちのはmakeinfo 4.13で何も言わないけど、確かにtexinfo的にはおかしいな。直しときます。
2013/07/19 10:59:24 UTCkoguro
#
今のGaucheはBoehm GCコンパイル時に -DPARALLEL_MARK をつけてないですが、これをつけると何か問題があるんでしょうか?
#
このオプションがない状態だと、スレッドでメモリアロケーション(もしくはGC)が行われる場合に、少なくともMacOSX上では、あまりCPUを使ってくれません。
#
テストプログラムは、
#
;; tp.scm
(use control.thread-pool)
(use gauche.logger)
(use gauche.parseopt)

(define (worker-nocons)
  (let loop ((i 0)
             (results '()))
    (if (= i 500000000)
        #t
        (loop (+ i 1) results))))

(define (worker-cons)
  (let loop ((i 0)
             (results '()))
    (cond
      ((= i 100000000)
       #t)
      ((= (modulo i 1000) 0)
       (loop (+ i 1) '()))
      (else
       (loop (+ i 1) (cons 1 results))))))

(define (main args)
  (log-open #t)
  (let-args (cdr args)
      ((num-threads "t=i")
       (use-cons? "c|cons" #f))
    (log-format "num of threads: ~d" num-threads)
    (let ((tp (make-thread-pool num-threads)))
      (for-each (^t (add-job! tp t)) (make-list num-threads (if use-cons?
                                                                worker-cons
                                                                worker-nocons)))
      (wait-all tp))
    0))
#
MacPro 3.33GHz 6-Core Intel Xeon (HTで12コア相当) での実行結果は、以下のとおりです。
#
# -DPARALLEL_MARKなし
% gosh tp.scm -t=12
Jul 19 19:45:40 tp.scm[75043]: num of threads: 12
gosh tp.scm -t=12  346.06s user 0.41s system 1128% cpu 30.711 total
% gosh tp.scm -c -t=8
Jul 19 19:46:17 tp.scm[75056]: num of threads: 8
gosh tp.scm -c -t=8  109.33s user 8.70s system 377% cpu 31.293 total
#
# -DPARALLEL_MARKあり
% gosh tp.scm -t=12  
Jul 19 19:47:08 tp.scm[75492]: num of threads: 12
gosh tp.scm -t=12  348.37s user 0.26s system 1154% cpu 30.207 total
% gosh tp.scm -c -t=8
Jul 19 19:47:45 tp.scm[75506]: num of threads: 8
gosh tp.scm -c -t=8  120.66s user 10.19s system 632% cpu 20.682 total
#
なお、MacOSX上では -DPARALLEL_MARKありで、make checkは通りました。
2013/07/19 11:10:12 UTCshiro
#
なんか理由があったような気もするのですが忘れてしまいました。理由があったとしても数年前の出来事なので、改めて検証する価値はあると思います。