com php-src: Optimized trim for what_len == 1: ext/standard/string.c
| From: | Xinchen Hui | Date: | Mon, 19 Jan 2015 12:45:30 +0000 |
| Subject: | com php-src: Optimized trim for what_len == 1: ext/standard/string.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-84178@lists.php.net to get a copy of this message | ||
Commit: ac9a1a7b0c54b6e7f0ddfdc8403fef354eb03d9e
Author: Xinchen Hui <laruence@php.net> Mon, 19 Jan 2015 07:45:30 -0500
Parents: eb8d7fe71075f9dd492a2d5111e33b082b2f3401
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ac9a1a7b0c54b6e7f0ddfdc8403fef354eb03d9e
Log:
Optimized trim for what_len == 1
Changed paths:
M ext/standard/string.c
Diff:
diff --git a/ext/standard/string.c b/ext/standard/string.c
index f746a24..a9b4cfe 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -797,29 +797,55 @@ PHPAPI zend_string *php_trim(zend_string *str, char *what, size_t what_len,
int
char mask[256];
if (what) {
- php_charmask((unsigned char*)what, what_len, mask);
-
- if (mode & 1) {
- for (i = 0; i < len; i++) {
- if (mask[(unsigned char)c[i]]) {
- trimmed++;
- } else {
- break;
+ if (what_len == 1) {
+ if (mode & 1) {
+ for (i = 0; i < len; i++) {
+ if (c[i] == *what) {
+ trimmed++;
+ } else {
+ break;
+ }
}
+ len -= trimmed;
+ c += trimmed;
}
- len -= trimmed;
- c += trimmed;
- }
- if (mode & 2) {
- if (len > 0) {
- i = len - 1;
- do {
+ if (mode & 2) {
+ if (len > 0) {
+ i = len - 1;
+ do {
+ if (c[i] == *what) {
+ len--;
+ } else {
+ break;
+ }
+ } while (i-- != 0);
+ }
+ }
+ } else {
+ php_charmask((unsigned char*)what, what_len, mask);
+
+ if (mode & 1) {
+ for (i = 0; i < len; i++) {
if (mask[(unsigned char)c[i]]) {
- len--;
+ trimmed++;
} else {
break;
}
- } while (i-- != 0);
+ }
+ len -= trimmed;
+ c += trimmed;
+ }
+ if (mode & 2) {
+ if (len > 0) {
+ i = len - 1;
+ do {
+ if (mask[(unsigned char)c[i]]) {
+ len--;
+ } else {
+ break;
+ }
+ } while (i-- != 0);
+ }
}
}
} else {