Speed up rendering of large gemini pages.
authorplugd <plugd@thelambdalab.xyz>
Fri, 30 Jul 2021 22:20:49 +0000 (00:20 +0200)
committerplugd <plugd@thelambdalab.xyz>
Fri, 30 Jul 2021 22:20:49 +0000 (00:20 +0200)
ISSUES.org
elpher.el

index cf082d1..9923820 100644 (file)
@@ -260,3 +260,20 @@ collapsable hierarchies.
 :LOGBOOK:
 - State "CLOSED"     from "OPEN"       [2021-07-23 Fri 10:09]
 :END:
+
+** CLOSED Improve gemeini rendering speed
+:LOGBOOK:
+- State "CLOSED"     from "OPEN"       [2021-07-31 Sat 00:18]
+:END:
+
+Currently pages with many links render extremely slowly.
+
+Example (>2000 links, 15s): gemini://rawtext.club/~sloum/geminilist/
+
+It turns out that by far the main contributor to this is the use of
+(url-port) in elpher-address-from-gemini-url.  I encountered this
+problem once before in elpher-remove-redundant-ports.  This function
+call is just incredibly slow for some bizarre reason.  Happily,
+(url-portspec) is functionally equivalent and is orders of magnitude
+faster.  With this replacement, loading the above page takes ~2s
+and there aren't any other hotspots.
index 0391d21..5197cb2 100644 (file)
--- a/elpher.el
+++ b/elpher.el
@@ -1454,7 +1454,7 @@ treatment that a separate function is warranted."
           (if (string-empty-p (url-filename address))
               (setf (url-filename address) "/")) ;ensure empty filename is marked as absolute
         (setf (url-host address) (url-host current-address))
-        (setf (url-port address) (url-port current-address))
+        (setf (url-portspec address) (url-portspec current-address)) ; (url-port) too slow!
         (unless (string-prefix-p "/" (url-filename address)) ;deal with relative links
           (setf (url-filename address)
                 (concat (file-name-directory (url-filename current-address))