Date: Sun, 30 May 1999 13:57:51 +0300 (IDT) From: Eli Zaretskii X-Sender: eliz AT is To: salvador AT inti DOT gov DOT ar cc: djgpp-workers AT delorie DOT com Subject: Re: memmove slow In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="1915981794-1315069535-928061871=:20904" Reply-To: djgpp-workers AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info. --1915981794-1315069535-928061871=:20904 Content-Type: TEXT/PLAIN; charset=US-ASCII On Mon, 24 May 1999 salvador AT inti DOT gov DOT ar wrote: > This was discussed months ago, perhaps even years. The memmove function is > unnecesary slow. > The code provided here is twice faster in average at least in my system. I checked it in, thanks. Btw, a naive testing of the speed against the v2.02 version using sizes from 1 to 330 shows only 15% gain (the test program I used is attached, and will be part of djtst203.zip). Did I do something stupid? --1915981794-1315069535-928061871=:20904 Content-Type: TEXT/PLAIN; name="memmove.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: LyogVGVzdCBwcm9ncmFtIGZvciBtZW1tb3ZlIGZ1bmN0aW9uLiAgICAgICAg ICAtKi0gY29kaW5nOiByYXctdGV4dCAtKi0gICovDQoNCiNpbmNsdWRlIDxz dHJpbmcuaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0ZGxp Yi5oPg0KI2luY2x1ZGUgPHRpbWUuaD4NCg0KLyogVGhpcyBtaWdodCBsb29r IGZ1bm55IG9uIHNvbWUgdGVybWluYWxzIG9yIHdpdGggc29tZSBlZGl0b3Jz Lg0KICAgV2hhdGV2ZXIgaXQgbG9va3MgbGlrZSwgRE9OJ1QgRURJVCBJVCEg ICovDQpzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzcmNidWZbXSA9DQoi YDEyMzQ1Njc4OTAtPVxccXdlcnR5dWlvcFtdYXNkZmdoamtsOyd6eGN2Ym5t LC4vIg0KIoCBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6Sl pqeoqaqrrK2uryINCiJ+IUAjJCVeJiooKV8rfFFXRVJUWVVJT1B7fUFTREZH SEpLTDpcIlpYQ1ZCTk08Pj8iDQoisLGys7S1tre4ubq7vL2+v8DBwsPExcbH yMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7fIg0KIi8uLG1uYnZjeHonO2xramhn ZmRzYV1bcG9pdXl0cmV3cVxcPS0wOTg3NjU0MzIxYCINCiLg4eLj5OXm5+jp 6uvs7e7v8PHy8/T19vf4+fr7/P3+jYyKiIeGhYSDgoGAkZCPjo0iDQoiPz48 TU5CVkNYWlwiOkxLSkhHRkRTQX17UE9JVVlUUkVXUXwrXykoKiZeJSQjQCF+ IjsNCg0Kc3RhdGljIGludA0KdGVzdCAodW5zaWduZWQgY2hhciAqYnVmLCBp bnQgYnVmbGVuLCBpbnQgb2Zmc2V0KQ0Kew0KICB1bnNpZ25lZCBiZWZvcmUg PSAqKHVuc2lnbmVkICopKGJ1ZiArIG9mZnNldCAtIDQpOw0KICB1bnNpZ25l ZCBhZnRlciAgPSAqKHVuc2lnbmVkICopKGJ1ZiArIGJ1ZmxlbiArIG9mZnNl dCk7DQogIGludCBmYWlsZWQgPSAwOw0KDQogIG1lbW1vdmUgKGJ1ZiArIG9m ZnNldCwgYnVmLCBidWZsZW4pOw0KICBpZiAobWVtY21wIChidWYgKyBvZmZz ZXQsIHNyY2J1ZiwgYnVmbGVuKSkNCiAgICB7DQogICAgICBwcmludGYgKCJU ZXN0ICVkLCAlZCBmYWlsZWQ6IGNvcnJ1cHRlZCBjb3B5LlxuIiwgYnVmbGVu LCBvZmZzZXQpOw0KICAgICAgZmFpbGVkKys7DQogICAgfQ0KICBpZiAoYmVm b3JlICE9ICoodW5zaWduZWQgKikoYnVmICsgb2Zmc2V0IC0gNCkpDQogICAg ew0KICAgICAgcHJpbnRmICgiVGVzdCAlZCwgJWQgZmFpbGVkOiBjb3JydXB0 ZWQgQkVGT1JFLlxuIiwgYnVmbGVuLCBvZmZzZXQpOw0KICAgICAgZmFpbGVk Kys7DQogICAgfQ0KICBpZiAoYWZ0ZXIgICE9ICoodW5zaWduZWQgKikoYnVm ICsgYnVmbGVuICsgb2Zmc2V0KSkNCiAgICB7DQogICAgICBwcmludGYgKCJU ZXN0ICVkLCAlZCBmYWlsZWQ6IGNvcnJ1cHRlZCBBRlRFUi5cbiIsIGJ1Zmxl biwgb2Zmc2V0KTsNCiAgICAgIGZhaWxlZCsrOw0KICAgIH0NCiAgcmV0dXJu IGZhaWxlZDsNCn0NCg0Kc3RhdGljIGludA0KZW1wdHkgKHZvaWQgKmQsIHZv aWQgKnMsIHNpemVfdCBsZW4pDQp7DQogIHJldHVybiBsZW47DQp9DQoNCmlu dCBtYWluICh2b2lkKQ0Kew0KICBjb25zdCBpbnQgbm1heCA9IHNpemVvZiAo c3JjYnVmKTsNCiAgdW5zaWduZWQgY2hhciAqdGVzdGJ1ZiA9ICh1bnNpZ25l ZCBjaGFyICopIG1hbGxvYyAoMyAqIG5tYXggKyA4KTsNCiAgaW50IG9mZiwg bGVuLCByZXN1bHQgPSAwOw0KICB1Y2xvY2tfdCB0MSwgdDIsIHQzLCB0NDsN Cg0KICBpZiAoIXRlc3RidWYpDQogICAgew0KICAgICAgcHJpbnRmICgiR2V0 IG1vcmUgbWVtb3J5IGFuZCB0aGVuIGNvbWUgYmFjayBhZ2Fpbi5cbiIpOw0K ICAgICAgcmV0dXJuIDE7DQogICAgfQ0KDQogIG1lbXNldCAodGVzdGJ1Ziwg MCwgMyAqIG5tYXggKyA4KTsNCiAgbWVtY3B5ICh0ZXN0YnVmICsgbm1heCAr IDQsIHNyY2J1Ziwgbm1heCk7DQoNCiAgdDEgPSB1Y2xvY2sgKCk7DQogIGZv ciAob2ZmID0gLW5tYXg7IG9mZiA8PSBubWF4OyBvZmYrKykNCiAgICBmb3Ig KGxlbiA9IDE7IGxlbiA8PSBubWF4OyBsZW4rKykNCiAgICAgIHsNCgltZW1t b3ZlICh0ZXN0YnVmICsgbm1heCArIDQgKyBvZmYsIHRlc3RidWYgKyBubWF4 ICsgNCwgbGVuKTsNCiAgICAgIH0NCg0KICB0MiA9IHVjbG9jayAoKTsNCg0K ICB0MyA9IHVjbG9jayAoKTsNCiAgZm9yIChvZmYgPSAtbm1heDsgb2ZmIDw9 IG5tYXg7IG9mZisrKQ0KICAgIGZvciAobGVuID0gMTsgbGVuIDw9IG5tYXg7 IGxlbisrKQ0KICAgICAgew0KCWVtcHR5ICh0ZXN0YnVmICsgbm1heCArIDQg KyBvZmYsIHRlc3RidWYgKyBubWF4ICsgNCwgbGVuKTsNCiAgICAgIH0NCg0K ICB0NCA9IHVjbG9jayAoKTsNCg0KICBwcmludGYgKCJTcGVlZCB0ZXN0IHRv b2sgJUxkIHVjbG9ja3MuXG4iLCB0MiAtIHQxIC0gKHQ0IC0gdDMpKTsNCg0K ICBmb3IgKG9mZiA9IC1ubWF4OyBvZmYgPD0gbm1heDsgb2ZmKyspDQogICAg Zm9yIChsZW4gPSAxOyBsZW4gPD0gbm1heDsgbGVuKyspDQogICAgICB7DQoJ bWVtc2V0ICh0ZXN0YnVmLCAwLCAzICogbm1heCArIDgpOw0KCW1lbWNweSAo dGVzdGJ1ZiArIG5tYXggKyA0LCBzcmNidWYsIG5tYXgpOw0KCXJlc3VsdCAr PSB0ZXN0ICh0ZXN0YnVmICsgbm1heCArIDQsIGxlbiwgb2ZmKTsNCiAgICAg IH0NCg0KICBpZiAocmVzdWx0KQ0KICAgIHByaW50ZiAoIiVkIHRlc3RzIGZh aWxlZC5cbiIsIHJlc3VsdCk7DQogIGVsc2UNCiAgICBwcmludGYgKCJBbGwg dGVzdHMgcGFzc2VkLlxuIik7DQoNCiAgcmV0dXJuIHJlc3VsdDsNCn0NCg== --1915981794-1315069535-928061871=:20904--