[Top][All Lists]
[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;
}