From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp-1.sys.kth.se (smtp-1.sys.kth.se [130.237.32.175]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p6SFCaRD027531 for ; Thu, 28 Jul 2011 11:12:36 -0400 (EDT) Received: from mailscan-1.sys.kth.se (mailscan-1.sys.kth.se [130.237.32.91]) by smtp-1.sys.kth.se (Postfix) with ESMTP id A04A81558A9 for ; Thu, 28 Jul 2011 17:12:30 +0200 (CEST) X-Virus-Scanned: by amavisd-new at kth.se Received: from smtp-1.sys.kth.se ([130.237.32.175]) by mailscan-1.sys.kth.se (mailscan-1.sys.kth.se [130.237.32.91]) (amavisd-new, port 10024) with LMTP id Unv+0PK739Io for ; Thu, 28 Jul 2011 17:12:29 +0200 (CEST) X-KTH-Auth: kristaps [89.158.117.88] X-KTH-mail-from: kristaps@bsd.lv X-KTH-rcpt-to: tech@mdocml.bsd.lv Received: from macky.local (89-158-117-88.rev.dartybox.com [89.158.117.88]) by smtp-1.sys.kth.se (Postfix) with ESMTP id 14D46154220 for ; Thu, 28 Jul 2011 17:12:28 +0200 (CEST) Message-ID: <4E317C5B.9000804@bsd.lv> Date: Thu, 28 Jul 2011 17:12:27 +0200 From: Kristaps Dzonsons User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 X-Mailinglist: mdocml-tech Reply-To: tech@mdocml.bsd.lv MIME-Version: 1.0 To: tech@mdocml.bsd.lv Subject: Re: Need hash: uthash? References: <4E313AC0.2010106@bsd.lv> <20110728150401.GA6081@britannica.bec.de> In-Reply-To: <20110728150401.GA6081@britannica.bec.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 28/07/2011 17:04, Joerg Sonnenberger wrote: > On Thu, Jul 28, 2011 at 12:32:32PM +0200, Kristaps Dzonsons wrote: >> mandoc is getting a `tr' implementation*, needed primarily for >> perlpod. This is expensive as it involves iterating over each >> character in each text string, then each element in an array of `tr' >> characters (or escape sequences). Expect it in the next few commits >> (now it's in polish phase). > > Shouldn't this use a simple byte lookup table for the hot path? > Most of the tr processing applies to non-special sequences and unicode > or other \-literals are rare. Joerg, On the contrary. perlpod (followed by GNU) is the main offender and makes significant use of escape-translation. Yes, I could special-case \(*W, but really would rather not. From OpenBSD: gnu/gcc/gcc/doc/gcjh.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/fsf-funding.7:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gfortran.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gcj.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gij.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/jv-convert.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gfdl.7:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gcc.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/jcf-dump.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/jv-scan.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gpl.7:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/cpp.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gcov.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/grmiregistry.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/grmic.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gjnih.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/g++.1:.tr \(*W-|\(bv\*(Tr gnu/gcc/gcc/doc/gcj-dbtool.1:.tr \(*W-|\(bv\*(Tr gnu/egcs/gcc/cp/g++.1:.tr !" gnu/usr.bin/binutils/binutils/doc/windres.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/ar.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/addr2line.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/nlmconv.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/size.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/readelf.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/strings.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/nm.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/ranlib.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/strip.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/objcopy.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/objdump.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/binutils/doc/dlltool.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils/gprof/gprof.1:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils-2.17/binutils/doc/windres.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/ar.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/addr2line.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/nlmconv.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/size.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/readelf.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/strings.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/nm.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/ranlib.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/strip.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/objcopy.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/objdump.1:.tr \(*W- gnu/usr.bin/binutils-2.17/binutils/doc/dlltool.1:.tr \(*W- gnu/usr.bin/binutils-2.17/gprof/gprof.1:.tr \(*W- gnu/usr.bin/binutils/binutils/doc/cxxfilt.man:.tr \(*W-|\(bv\*(Tr gnu/usr.bin/binutils-2.17/binutils/doc/cxxfilt.man:.tr \(*W- gnu/usr.bin/cxxfilt/cxxfilt.man:.tr \(*W-|\(bv\*(Tr From NetBSD: external/gpl3/binutils/dist/binutils/doc/windres.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/ar.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/addr2line.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/nlmconv.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/windmc.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/size.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/readelf.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/strings.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/nm.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/ranlib.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/strip.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/objcopy.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/objdump.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/binutils/doc/dlltool.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/ld/ld.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/gas/doc/as.1:.tr \(*W-|\(bv\*(Tr external/gpl3/binutils/dist/gprof/gprof.1:.tr \(*W-|\(bv\*(Tr external/gpl2/lvm2/dist/scripts/lvm2create_initrd/lvm2create_initrd.8:.tr \(*W-|\(bv\*(Tr crypto/external/bsd/openssl/lib/libcrypto/man/ERR_load_strings.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_genpkey.1:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/DSA_SIG_new.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_md5.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/BN_mod_mul_montgomery.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_connect.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/DSA_do_sign.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/ASN1_STRING_new.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/BN_swap.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_CTX_use_psk_identity_hint.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/ERR_load_crypto_strings.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/CMS_final.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/EVP_PKEY_encrypt.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_err.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/X509_STORE_CTX_get_error.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_pkeyutl.1:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_CTX_new.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/EVP_PKEY_derive.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/ERR_get_error.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_clear.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_ecdsa.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_CTX_set_options.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/BN_generate_prime.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_x509.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_errstr.1:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_pending.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/d2i_X509_REQ.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/DH_size.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/SSL_want.3:.tr \(*W- crypto/external/bsd/openssl/lib/libcrypto/man/openssl_s_time.1:.tr \(*W- (this goes on and on) -- To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv