fenfire-commits
[Top][All Lists]
Advanced

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

[ff-cvs] fenfire/org/fenfire fenpdf/appearance/papers.py...


From: Tuomas J. Lukka
Subject: [ff-cvs] fenfire/org/fenfire fenpdf/appearance/papers.py...
Date: Tue, 26 Aug 2003 14:50:47 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Tuomas J. Lukka <address@hidden>        03/08/26 14:50:47

Modified files:
        org/fenfire/fenpdf/appearance: papers.py views.py 
        org/fenfire/spanimages/gl: CachingSpanImageFactory.java 
                                   PageScrollBlockImager.java 

Log message:
        patch-74
        Cache control, and use it to see the biggest missing cache we have: 
oopsie - spanimagevobs were not being cached...
        patch-75
        Put the node function cache where it's needed. Now MUCH better tuned 
than before
        patch-76

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/appearance/papers.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/appearance/views.py.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/CachingSpanImageFactory.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/spanimages/gl/PageScrollBlockImager.java.diff?tr1=1.13&tr2=1.14&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/fenpdf/appearance/papers.py
diff -u fenfire/org/fenfire/fenpdf/appearance/papers.py:1.7 
fenfire/org/fenfire/fenpdf/appearance/papers.py:1.8
--- fenfire/org/fenfire/fenpdf/appearance/papers.py:1.7 Tue Aug 26 04:56:11 2003
+++ fenfire/org/fenfire/fenpdf/appearance/papers.py     Tue Aug 26 14:50:47 2003
@@ -105,6 +105,11 @@
        else:
             raise 'FIX ME! Got None makeEntry.'
 
+       # Then, make it cache stuff
+       self.spanImageFactory = \
+           ff.spanimages.gl.CachingSpanImageFactory(
+               self.spanImageFactory)
+
     def getSpanImageFactory(self):
        return self.spanImageFactory
 
Index: fenfire/org/fenfire/fenpdf/appearance/views.py
diff -u fenfire/org/fenfire/fenpdf/appearance/views.py:1.18 
fenfire/org/fenfire/fenpdf/appearance/views.py:1.19
--- fenfire/org/fenfire/fenpdf/appearance/views.py:1.18 Tue Aug 26 07:34:40 2003
+++ fenfire/org/fenfire/fenpdf/appearance/views.py      Tue Aug 26 14:50:47 2003
@@ -208,7 +208,7 @@
                        self.fen.txtfunc, accursed_text, 
                        self.getPageNodeView(java.awt.Color.red))
        return ff.swamp.CachedPureNodeFunction(
-                       150, self.fen.constgraph, accursed_dispatcher)
+                       10, self.fen.constgraph, accursed_dispatcher)
 
     def getNormalNodeContentFunction(self):
 
@@ -220,7 +220,7 @@
                        self.fen.txtfunc, normal_text, 
                        self.getPageNodeView(java.awt.Color.black))
        return ff.swamp.CachedPureNodeFunction(
-                       150, self.fen.constgraph, normal_dispatcher)
+                       500, self.fen.constgraph, normal_dispatcher)
 
     def createMultiplexerNodeContentFunction(self):
        return ff.swamp.MultiplexerNodeFunction(
Index: fenfire/org/fenfire/spanimages/gl/CachingSpanImageFactory.java
diff -u fenfire/org/fenfire/spanimages/gl/CachingSpanImageFactory.java:1.2 
fenfire/org/fenfire/spanimages/gl/CachingSpanImageFactory.java:1.3
--- fenfire/org/fenfire/spanimages/gl/CachingSpanImageFactory.java:1.2  Wed Aug 
13 02:36:32 2003
+++ fenfire/org/fenfire/spanimages/gl/CachingSpanImageFactory.java      Tue Aug 
26 14:50:47 2003
@@ -25,6 +25,7 @@
  */
 
 package org.fenfire.spanimages.gl;
+import org.nongnu.libvob.util.CacheControl;
 import org.fenfire.spanimages.*;
 import org.nongnu.navidoc.util.*;
 import org.nongnu.alph.*;
@@ -38,9 +39,12 @@
     private Map cache = Collections.synchronizedMap(
                    new SoftValueMap());
     public SpanImageFactory factory;
+    CacheControl.Listener listener;
 
     public CachingSpanImageFactory(SpanImageFactory factory) {
        this.factory = factory;
+       listener = CacheControl.registerCache(this, 
+                       "SpanImage cache for "+factory);
     }
 
     public void clear() {
@@ -50,9 +54,12 @@
     public SpanImageVob getSpanImageVob(ImageSpan s) {
        SpanImageVob ret = (SpanImageVob)cache.get(s);
        if(ret == null) {
+           listener.startMiss(s);
            ret = factory.getSpanImageVob(s);
            cache.put(s, ret);
-       }
+           listener.endMiss(s);
+       } else 
+           listener.hit(s);
        return ret;
     }
 }
Index: fenfire/org/fenfire/spanimages/gl/PageScrollBlockImager.java
diff -u fenfire/org/fenfire/spanimages/gl/PageScrollBlockImager.java:1.13 
fenfire/org/fenfire/spanimages/gl/PageScrollBlockImager.java:1.14
--- fenfire/org/fenfire/spanimages/gl/PageScrollBlockImager.java:1.13   Mon Aug 
18 05:46:28 2003
+++ fenfire/org/fenfire/spanimages/gl/PageScrollBlockImager.java        Tue Aug 
26 14:50:47 2003
@@ -28,6 +28,7 @@
 import org.nongnu.alph.*;
 import org.nongnu.alph.util.*;
 import org.nongnu.navidoc.util.*;
+import org.nongnu.libvob.util.CacheControl;
 import org.nongnu.storm.*;
 import org.python.util.*;
 import org.python.core.*;
@@ -56,6 +57,9 @@
      */
     private Map block2pagefiles = Collections.synchronizedMap(
                                    new CachingMap(200));
+    private CacheControl.Listener block2pagefileListener =
+               CacheControl.registerCache(this,
+                           "PageScrollBlockImager block2pagefile");
 
     /** A list (index==page) of maps (key==blockid, value==SingleImage).
      * There are far fewer pages than blocks - therefore,
@@ -64,12 +68,19 @@
      * A bit strange but efficient.
      */
     private List pageblock2singleimage  = Collections.synchronizedList(new 
ArrayList());
-    private Map getPageblock2singleimageMap(int i) {
+    private class PageMap {
+       Map map;
+       CacheControl.Listener listener;
+    }
+    private PageMap getPageblock2singleimageMap(int i) {
        while(i >= pageblock2singleimage.size()) 
            pageblock2singleimage.add(null);
-       Map m = (Map)pageblock2singleimage.get(i);
+       PageMap m = (PageMap)pageblock2singleimage.get(i);
        if(m == null) {
-           m = Collections.synchronizedMap(new SoftValueMap());
+           m = new PageMap();
+           m.map = Collections.synchronizedMap(new SoftValueMap());
+           m.listener = CacheControl.registerCache(m, 
+                       "PageScrollBlockImager map");
            pageblock2singleimage.set(i, m);
        }
        return m;
@@ -84,11 +95,13 @@
        PageImageSpan span = (PageImageSpan)img;
        int page = span.getPageIndex();
 
-       Map map = getPageblock2singleimageMap(page);
+       PageMap map = getPageblock2singleimageMap(page);
        ScrollBlock sb = img.getScrollBlock();
-       SingleImage singleImage = (SingleImage)map.get(sb.getID());
+
+       SingleImage singleImage = (SingleImage)map.map.get(sb.getID());
 
        if(singleImage == null) {
+           map.listener.startMiss(sb.getID());
 
            try {
                int[] res = new int[2];
@@ -105,8 +118,9 @@
            } catch(Exception e) {
                throw new Error("Couldn't create singleimage! "+e);
            }
-           map.put(sb.getID(), singleImage);
-       }
+           map.map.put(sb.getID(), singleImage);
+       } else
+           map.listener.hit(sb.getID());
        return singleImage;
     }
 
@@ -114,9 +128,12 @@
            throws FileNotFoundException {
        PageFiles f = (PageFiles) block2pagefiles.get(pages);
        if(f == null) {
+           block2pagefileListener.startMiss(pages);
            f = makePageFiles(pages);
            block2pagefiles.put(pages, f);
-       }
+           block2pagefileListener.endMiss(pages);
+       } else
+           block2pagefileListener.hit(pages);
        return f;
     }
 




reply via email to

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