From: Finn B. <bc...@us...> - 2001-01-21 14:00:23
|
Update of /cvsroot/jython/jython/org/python/core In directory usw-pr-cvs1:/tmp/cvs-serv10884 Modified Files: Py.java PyString.java __builtin__.java Log Message: Optimized iteration over a string by reducing the number of new objects created. Index: Py.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/Py.java,v retrieving revision 2.31 retrieving revision 2.32 diff -C2 -r2.31 -r2.32 *** Py.java 2001/01/17 11:51:14 2.31 --- Py.java 2001/01/21 14:00:33 2.32 *************** *** 342,346 **** public static PyString newString(char c) { ! return makeCharacter(new Character(c)); } --- 342,346 ---- public static PyString newString(char c) { ! return makeCharacter(c); } *************** *** 1288,1296 **** private static PyString[] letters=null; static final PyString makeCharacter(Character o) { ! char c = o.charValue(); ! if (c > 255) { ! return new PyString(o.toString()); } --- 1288,1299 ---- private static PyString[] letters=null; + static final PyString makeCharacter(Character o) { ! return makeCharacter(o.charValue()); ! } ! ! static final PyString makeCharacter(char c) { if (c > 255) { ! return new PyString(new Character(c).toString()); } Index: PyString.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyString.java,v retrieving revision 2.32 retrieving revision 2.33 diff -C2 -r2.32 -r2.33 *** PyString.java 2000/12/15 22:55:54 2.32 --- PyString.java 2001/01/21 14:00:33 2.33 *************** *** 592,596 **** protected PyObject get(int i) { ! return new PyString(string.substring(i,i+1)); } --- 592,596 ---- protected PyObject get(int i) { ! return Py.newString(string.charAt(i)); } Index: __builtin__.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/__builtin__.java,v retrieving revision 2.23 retrieving revision 2.24 diff -C2 -r2.23 -r2.24 *** __builtin__.java 2001/01/15 04:44:33 2.23 --- __builtin__.java 2001/01/21 14:00:33 2.24 *************** *** 305,309 **** int n = chars.length; for(i=0, j=0; i<n; i++) { ! args[0] = Py.makeCharacter(new Character(chars[i])); if (!f.__call__(args).__nonzero__()) continue; --- 305,309 ---- int n = chars.length; for(i=0, j=0; i<n; i++) { ! args[0] = Py.makeCharacter(chars[i]); if (!f.__call__(args).__nonzero__()) continue; |