- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
void ** __attribute__((noinline)) findVoidSortMap(void ** list,void *key)
{
if (!list) return 0;
if (!*list) return 0;
unsigned int count= **(unsigned int**)list;
char *p=(char*)*list;
p+=4;
Element *b=(Element *)p;
long long skey=(long long)key;
while (count>0) {
void** kt=(void**)&b[count>>1];
long long rkey=(long long)kt[0];
if (skey==rkey) return (void**)&kt[1];
if (skey>rkey) {b+=(count>>1)+1;count--;}
count=count>>1;
}
return (void**)-1;
}
TarasB 05.01.2015 17:21 # +3
LispGovno 10.01.2015 01:10 # 0
guest 10.01.2015 12:24 # 0
gost 05.01.2015 17:35 # 0
В 2015 году. Круто.
А автору сего предложения не помешала бы практика языка "русский".
Dummy00001 05.01.2015 18:27 # 0
16я строка намекает на какую-то структуру данных.
wvxvw 05.01.2015 18:51 # +2
Указатель на указатель пустоты, минус один, это же очевидно!
3.14159265 05.01.2015 19:25 # 0
Есть какие голые цифры?
TarasB 05.01.2015 20:47 # 0
3.14159265 05.01.2015 21:08 # 0
На 90-100х?
>В среднм как интел вдвое большей частоты
А за счёт чего получается такой большой IPC? И там же джва режима - один нативный, другой эмуляция x86.
>но очень зауисит от теста гдето лучше гдето хуже
Практически весь софт в той или иной мере годами точился под интел (80% рынка не хухры-мухры). Ассемблерные вставки и прочие специфичные тюны пройдут мимо эльбруса.
Надо делать на это скидку. Вообще думал будет много хуже. А так 65нм, миллиард транзисторов, неплохое энергопотребление и очень неплохой как для отечественной разработки (пусть и спижженой) пирфоманс.
TarasB 05.01.2015 21:23 # +1
Xom94ok 05.01.2015 21:35 # 0
Его под векторизацию затачивали. Там даже DSP можно программировать на подмножестве крестов :) Где-то на сайте МЦСТ есть методички "как помочь компилятору векторизировать код", которая и близко не похоже на код в посте.
guest 10.01.2015 16:09 # 0
> В среднм как интел вдвое большей частоты
Вот это я читал больше года назад и с тех пор ничего конкретнее.
laMer007 05.01.2015 22:12 # 0
> 70 тыс.р.
Ясно
3.14159265 05.01.2015 22:17 # 0
Откуда цифра?
laMer007 05.01.2015 22:36 # 0
3.14159265 05.01.2015 22:38 # 0
laMer007 05.01.2015 22:39 # +3
3.14159265 05.01.2015 22:40 # 0
>и анальную смазку на остаток средств
Мсьё знает толк...
guest 10.01.2015 21:38 # 0
DlangGovno 06.01.2015 01:52 # +4
Тарасу предложи, пока у него бабло не кончилось. Пусть свои поделия попортирует.
bormand 06.01.2015 10:07 # 0
bormand 10.01.2015 12:47 # 0
bormand 10.01.2015 12:54 # 0
roman-kashitsyn 10.01.2015 15:59 # 0
Оффтоп: удивительно, насколько паршиво в STL сделан поиск по ключу в сортированных векторах.
bormand 10.01.2015 16:01 # 0
P.S. lower_bound() и upper_bound()?
roman-kashitsyn 10.01.2015 16:03 # 0
по моей шкале отвратительности - NaN
roman-kashitsyn 10.01.2015 16:04 # 0
А теперь предположим, что вектор структур отсортирован по полю (имя/ид/дата/етц), у меня есть значение поля, и я хочу найти соответствующую структуру...
Soul_re@ver 10.01.2015 16:19 # 0
equal_range с кастомным компаратором?
bormand 10.01.2015 22:30 # 0
Если ключи не уникальны - equals_range() с тем же компаратором (или lower_bound() + upper_bound()). А тут чего плохого?
roman-kashitsyn 11.01.2015 00:51 # +1
Т.е. либо писать разные компараторы, либо писать в одном три унылых bool operator() в одном компараторе.
А недавно нужно было отсортировать массив индексов другого массива, содержащего числа...
В общем, линз вроде пистоньего key=f определённо не хватает.
Xom94ok 11.01.2015 01:46 # +2
Всем стоять-бояться, LINQ for C++ спешит на помощь!
LispGovno 11.01.2015 12:18 # 0
bormand 11.01.2015 01:46 # 0
LispGovno 11.01.2015 12:15 # 0
LispGovno 11.01.2015 12:28 # 0
Что линзы то делают?
Стоп, ты предлагаешь в язык ввести синтаксический сахарок только из-за одной неправильнонаписанной функции? круто бро. функцию исправленную просто надо добавить
roman-kashitsyn 11.01.2015 12:39 # 0
Ты с дуба упал?
Я говорю не о синтаксическом сахаре, а об организации API.
В пистоне функция сортировки опционально берёт на вход функцию, отображающую множество элементов массива на произвольное упорядоченное множество. Linq-овский OrderBy работает так же. Такое апи позволило бы иметь один компаратор на sort, upper_bound, lower_bound, equal_range.
bormand 11.01.2015 13:08 # 0
Как-то так, наверное:
bormand 11.01.2015 13:10 # 0
LispGovno 11.01.2015 14:35 # 0
bormand 11.01.2015 14:54 # 0
P.S. Хотя вроде бы нашлась какая-то реализация function_traits.
LispGovno 11.01.2015 15:14 # 0
bormand 11.01.2015 15:47 # 0
P.S. Хотя... борланд же мёртв.
roman-kashitsyn 11.01.2015 18:42 # +1
bormand 11.01.2015 18:57 # 0
Да, это фейл. Тут только цель руками указывать остается... comparator.for_lower_bound(), comparator.for_sort() и т.п. Жопа.
bormand 11.01.2015 19:06 # 0