|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
Блгодаря за инфото. Наистина не е изненадващ резултатът. Но сега сме сигурни, че това е повече от 2 пъти по-бързия начин :)
| |
|
Или да бест :
sub _bez_math_ {
my $a = $_[0];
my $b = $_[1];
$b, $a
}
Суап с математическа логика определено е бавен и безсмислен, както на ниско ниво, така и на високо ниво (език като Пърл или всевъзможните функционални езици).
Примерно, ако искаш на Ц да има макрос за суап: Макросът е добро решение, защото няма кол овърхед, а и за разлика от инлайнатите функции имплементира кол бай нейм полиси.
#define SWAP(a, b) { a ^= b; b ^= a; a ^= b; }
За съжаление не е съвсем безболезнено да се направи с използване на 3-та променлива, поради обвързване с тип. Във Ц може да се мине с някаква променлива от целочислен тип (да е една машинна дума), защото аритметиката така или инак предполага цели числа. В Ц++, може да е по-сложен типа и там макросът е невървежен, но, все пак, с шаблонна функция имаш и по-генерално решение, не само за цели числа.Редактирано от пpocтo1чoвek на 28.10.07 12:44.
| |
|
усложняваш нещата
sub _bez_math_ { $_[1], $_[0] }
а за С и С++ не знам, звучат като програмни езици
| |
|
Решенията, които дадохте са много добри !
Поздрави на всички в дискусията!
| |
|
умри, неделчо
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|