bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: substantial performance loss when running long-lived or computationa


From: Thien-Thi Nguyen
Subject: Re: substantial performance loss when running long-lived or computationally intensive programs
Date: Tue, 28 Oct 2003 16:46:28 +0100

   From: "Michael A. Wells" <address@hidden>
   Date: Mon, 05 May 2003 22:36:26 -0500 (CDT)

   Although this problem is present in Guile-1.6.4, the problem dates
   back to at least Guile 1.4.

thanks for the bug report.  i have started to clean up the 1.4.x branch
(in cvs) as a result.  the following functions have been fixed to date:

 scm_getcwd
 scm_readlink
 scm_getgroups
 scm_fill_sockaddr
 scm_regexp_exec
 scm_localtime
 scm_mktime
 scm_strftime

i expect to finish the audit for the 1.4.1.97 release.  please feel
free to share further observations (in case i miss something).

fyi, below is a simple program i use like so: "guile -s stress.scm" to
eyeball-check for improved behavior (before/after changing the function
in question).

thi


[cc trimmed]

____________________________________________
(define (report)
  (format #t "~A : ~A\n"
          (strftime "%Y-%m-%d %H:%M:%S" (localtime (current-time)))
          (assq-ref (gc-stats) 'bytes-malloced)))

;;- (define stress getcwd)

;;- (define stress getgroups)

;;- (define (stress)
;;-   ;; fports.c -- "fport_close"
;;-   ;; ports.c -- "scm_remove_from_port_table"
;;-   (with-output-to-string (lambda ()
;;-                            (display "1234567890")
;;-                            (display "1234567890"))))

;;- (define *token* (make-regexp "^[A-Za-z0-9_]*"))
;;- 
;;- (define (stress)
;;-   ;; libguile/regex-posix.c -- "scm_regexp_exec"
;;-   (regexp-exec *token* "foo"))

(define now (localtime (current-time)))

(define (stress)
  (strftime "%Y-%m-%d %H:%M:%S" now))

(report)
(let loop ((n 0))
  (stress) (stress) (stress) (stress) (stress)
  (stress) (stress) (stress) (stress) (stress)
  (if (= 0 n)
      (begin (report) (loop 100000))
      (loop (1- n))))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]