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;
|