mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Several optimizations and speed improvements.
cstubs: Use Matrix type instead of float[4][4].
This commit is contained in:
parent
a75d306e2b
commit
3bb8a05947
10 changed files with 216 additions and 63 deletions
|
@ -529,21 +529,21 @@ gl_getmatrix(self, args)
|
|||
object *self;
|
||||
object *args;
|
||||
{
|
||||
float arg1 [ 16 ] ;
|
||||
Matrix arg1;
|
||||
object *v, *w;
|
||||
int i;
|
||||
int i, j;
|
||||
getmatrix( arg1 );
|
||||
v = newlistobject(16);
|
||||
if (v == NULL) {
|
||||
return err_nomem();
|
||||
}
|
||||
for (i = 0; i < 16; i++) {
|
||||
w = mknewfloatobject(arg1[i]);
|
||||
for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) {
|
||||
w = mknewfloatobject(arg1[i][j]);
|
||||
if (w == NULL) {
|
||||
DECREF(v);
|
||||
return NULL;
|
||||
}
|
||||
setlistitem(v, i, w);
|
||||
setlistitem(v, i*4+j, w);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
@ -559,7 +559,7 @@ gl_altgetmatrix(self, args)
|
|||
object *self;
|
||||
object *args;
|
||||
{
|
||||
float arg1 [ 4 ] [ 4 ] ;
|
||||
Matrix arg1;
|
||||
object *v, *w;
|
||||
int i, j;
|
||||
getmatrix( arg1 );
|
||||
|
@ -742,7 +742,7 @@ gl_packrect(self, args)
|
|||
if (packed == NULL)
|
||||
return NULL;
|
||||
parray = (unsigned long *) getstringvalue(unpacked);
|
||||
p = getstringvalue(packed);
|
||||
p = (unsigned char *) getstringvalue(packed);
|
||||
for (y = 0; y < height; y += packfactor, parray += packfactor*width) {
|
||||
for (x = 0; x < width; x += packfactor) {
|
||||
pixel = parray[x];
|
||||
|
|
|
@ -254,24 +254,26 @@ strop_lower(self, args)
|
|||
object *self; /* Not used */
|
||||
object *args;
|
||||
{
|
||||
char *s;
|
||||
char *s, *s_new;
|
||||
int i, n;
|
||||
object *new;
|
||||
int changed;
|
||||
|
||||
if (!getargs(args, "s#", &s, &n))
|
||||
return NULL;
|
||||
new = newsizedstringobject(s, n);
|
||||
new = newsizedstringobject(NULL, n);
|
||||
if (new == NULL)
|
||||
return NULL;
|
||||
s = getstringvalue(new);
|
||||
s_new = getstringvalue(new);
|
||||
changed = 0;
|
||||
for (i = 0; i < n; i++) {
|
||||
char c = s[i];
|
||||
char c = *s++;
|
||||
if (isupper(c)) {
|
||||
changed = 1;
|
||||
s[i] = tolower(c);
|
||||
}
|
||||
*s_new = tolower(c);
|
||||
} else
|
||||
*s_new = c;
|
||||
s_new++;
|
||||
}
|
||||
if (!changed) {
|
||||
DECREF(new);
|
||||
|
@ -287,24 +289,26 @@ strop_upper(self, args)
|
|||
object *self; /* Not used */
|
||||
object *args;
|
||||
{
|
||||
char *s;
|
||||
char *s, *s_new;
|
||||
int i, n;
|
||||
object *new;
|
||||
int changed;
|
||||
|
||||
if (!getargs(args, "s#", &s, &n))
|
||||
return NULL;
|
||||
new = newsizedstringobject(s, n);
|
||||
new = newsizedstringobject(NULL, n);
|
||||
if (new == NULL)
|
||||
return NULL;
|
||||
s = getstringvalue(new);
|
||||
s_new = getstringvalue(new);
|
||||
changed = 0;
|
||||
for (i = 0; i < n; i++) {
|
||||
char c = s[i];
|
||||
char c = *s++;
|
||||
if (islower(c)) {
|
||||
changed = 1;
|
||||
s[i] = toupper(c);
|
||||
}
|
||||
*s_new = toupper(c);
|
||||
} else
|
||||
*s_new = c;
|
||||
s_new++;
|
||||
}
|
||||
if (!changed) {
|
||||
DECREF(new);
|
||||
|
@ -320,28 +324,31 @@ strop_swapcase(self, args)
|
|||
object *self; /* Not used */
|
||||
object *args;
|
||||
{
|
||||
char *s;
|
||||
char *s, *s_new;
|
||||
int i, n;
|
||||
object *new;
|
||||
int changed;
|
||||
|
||||
if (!getargs(args, "s#", &s, &n))
|
||||
return NULL;
|
||||
new = newsizedstringobject(s, n);
|
||||
new = newsizedstringobject(NULL, n);
|
||||
if (new == NULL)
|
||||
return NULL;
|
||||
s = getstringvalue(new);
|
||||
s_new = getstringvalue(new);
|
||||
changed = 0;
|
||||
for (i = 0; i < n; i++) {
|
||||
char c = s[i];
|
||||
char c = *s++;
|
||||
if (islower(c)) {
|
||||
changed = 1;
|
||||
s[i] = toupper(c);
|
||||
*s_new = toupper(c);
|
||||
}
|
||||
else if (isupper(c)) {
|
||||
changed = 1;
|
||||
s[i] = tolower(c);
|
||||
*s_new = tolower(c);
|
||||
}
|
||||
else
|
||||
*s_new = c;
|
||||
s_new++;
|
||||
}
|
||||
if (!changed) {
|
||||
DECREF(new);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue