Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Итоги не очень. Слил все идеи воедино, скорость особо не выросла, получилось только память поэкономить. Переименовал немного, теперь: next_prime() это последняя x64 версия next_prime32() это старый next_prime() next_prime64() тот же какой был, прототип текущего next_prime() Что получилось оптимизировать: 1. Память: под решето 64кб и от 16 кб под кэш для инициализации. 16 кб хватает до ~10^10, максимум 196 Мб для 10^19 2. Пропуск кратных 2,3 немного ускорил, дальше наращивать - бесполезно, тормоза только возрастают. 3. Возможна многопоточность, только надо изначально инициализировать кэш next_prime(MAX) (позже попробую обогнать Аткина на 4 ядрах) Результаты на линукс x64 (g++ nextprime.cpp -O2)Test(0M...1000M): next_prime32() count 50847534 primes. time 1974 msec speed 25758K/sec OK Test(0M...1000M): next_prime64() count 50847534 primes. time 2045 msec speed 24864K/sec OK Test(0M...1000M): next_prime() count 50847534 primes. time 1741 msec speed 29205K/sec OK Test(4000M...6000M): next_prime() count 89583557 primes. time 3540 msec speed 25306K/sec OK Test(4000M...6000M): next_prime64() count 89583557 primes. time 4314 msec speed 20765K/sec OK При компиляции под x32 тормоза в 1,5 раза для x64тоже самое MSVC2008 x32Test(0M...1000M): next_prime32() count 50847534 primes. time 2143 msec speed 23727K/sec OK Test(0M...1000M): next_prime64() count 50847534 primes. time 2764 msec speed 18396K/sec OK Test(0M...1000M): next_prime() count 50847534 primes. time 2804 msec speed 18133K/sec OK Test(4000M...6000M): next_prime() count 89583557 primes. time 5768 msec speed 15531K/sec OK Test(4000M...6000M): next_prime64() count 89583557 primes. time 5778 msec speed 15504K/sec OK Максимума разрядности x64 достигнуть не удалось. Чуть раньше останавливается из-за превышения разрядности во время заполнения решета. Максимум получил 18 446 744 030 759 878 627 до 2^64 не дошел на 42 949 750 784. Исходники next_prime.h зафиксировал. Там же nextprime.cpp тесты PS Потестил корректность сколько смог, рандомно результаты между собой посравнивал. Работает. Но primesieve говорит что в диапазоне 4...6 млрд. на одно число меньше. Поразбираюсь позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 16:55 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima Tprimesieve говорит что в диапазоне 4...6 млрд. на одно число меньше. Поразбираюсь позже. Нашел причину. Ошибка в тестах была. Поправил. Проверил до 10^10 количество совпадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 17:12 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
А тут кастинг обязательно указывать? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 18:22 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonА тут кастинг обязательно указывать? Код: plaintext 1. Не знаю как правильно написать. MSVC нормально понимает без (uint64_t). g++ варнинги писал, добавил (uint64_t) - ничего не поменялось, затестил - понимает правильно, оставил так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 18:34 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Сделал пример многопоточного использования multi_prime.cpp В 4 потока на 4 ядрах посчитал до 10^9 за <0,5 сек :) Код: plaintext 1. 2. PS Сделал потоки на WinAPI, под линуксом не соберется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 10:51 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TВ 4 потока на 4 ядрах посчитал до 10^9 за <0,5 сек :) Код: plaintext 1. 2. Поздравляю! Какие ближайшие планы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 11:05 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TСделал пример многопоточного использования multi_prime.cpp В 4 потока на 4 ядрах посчитал до 10^9 за <0,5 сек :) Код: plaintext 1. 2. PS Сделал потоки на WinAPI, под линуксом не соберется. Макрос есть. __WIN32 или что-то в этом роде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2015, 11:21 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Навел порядок, причесал исходники. Сделал два файла с x32 и x64 версиями next_prime() внутри: next_prime32.h next_prime64.h От x64 в реальности польза сомнительная, все равно тормозит на больших числах, и на малых при x32 компиляторе, поэтому сделал отдельно x32 вариант, для практических задач ее хватит (по крайней мере мне). Настроил x32 на минимальный расход памяти 22.5 кб на расчет любого до 2^32. Исходники тут PS mayton, исправь, пожалуйста, ссылку в первом посте на действительно последний вариант. PPS egorych, ты был прав 17466144 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2015, 12:22 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Пощупал gmp. Интересно а как проверить некорректную конверсию строка-число? Пока не понял. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. В доке пишут. https://gmplib.org/manual/Assigning-Integers.html — Function: int mpz_set_str (mpz_t rop, const char *str, int base) Set the value of rop from str, a null-terminated C string in base base. White space is allowed in the string, and is simply ignored. The base may vary from 2 to 62, or if base is 0, then the leading characters are used: 0x and 0X for hexadecimal, 0b and 0B for binary, 0 for octal, or decimal otherwise. For bases up to 36, case is ignored; upper-case and lower-case letters have the same value. For bases 37 to 62, upper-case letter represent the usual 10..35 while lower-case letter represent 36..61. This function returns 0 if the entire string is a valid number in base base. Otherwise it returns -1. Получается что я не могу различать присвоение "0" и неуспех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2015, 14:30 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TPS mayton, исправь, пожалуйста, ссылку в первом посте на действительно последний вариант. Ну... я не совсем понял что на что я должен исправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2015, 14:40 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonПолучается что я не могу различать присвоение "0" и неуспех. Затести Код: plaintext 1. 2. 3. результат-1 0 0 Там есть mpz_init_set_str() - это совмещенные mpz_init() и mpz_set_str() maytonНу... я не совсем понял что на что я должен исправить. так поправьэту ссылку убрать, т.к. версия в итоге оказалась хоть и рабочей, но промежуточной, да и в sourceforge она тоже есть. Dima T http://www.sql.ru/forum/1149455/generator-prostyh-chisel-do-10-9-za-5-sek?mid=17451792#17451792 а так написать next_prime32.h next_prime64.h Тесты и примеры использования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2015, 16:10 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Вобщем я решил взять некую паузу и вернуться к истокам. С Эвклиду. Этот старый бородач создал алгоритм которому нет аналогов в мире в соотношении простоты и полезного эффекта. Я имею в виду НОД (в англоязычном варианте GCD - Greatest Common Divisor). Описывать шаги не буду. Вики описала много. Добавлю свои наблюдения + разный материал из разных источников. Некоторые свойства. Если Код: plaintext 1. то числа a и b называются взаимно простые. Например 3 и 5. Взаимно простые образуют несократимую дробь a/b. Для трех аргументов утверждение взаимной простоты не влечёт попарную простоту. Если gcd(a,b,c) = 1 то вовсе не факт что gcd(a,b).... e.t.c. должно быть равно 1. Далее Код: plaintext 1. - число является делителем по отношению к группе таких-же И наконец свёртка: Код: plaintext 1. Последний метод возможно имеет элегантное функциональное описание. Почему я взялся за Эвклида? Ответ - простота. И фундаментальные отсылки которые ведут к постоянной оценке кратности. Без этого алгоритма не упрощаются рациональные дроби. gcd упрощает дроби не привлекая primes в явном виде. И эта особенность - привлекает. Существуют также связи Эвклида с непрерывными дробями и с функцией Эйлера. (Из книги Виноградова.) Книгу пока неосилил но всё будет постепенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2015, 23:25 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonВобщем я решил взять некую паузу и вернуться к истокам. С Эвклиду. Этот старый бородач создал алгоритм которому нет аналогов в мире в соотношении простоты и полезного эффекта. Я имею в виду НОД (в англоязычном варианте GCD - Greatest Common Divisor). На отличную мысль натолкнул, давно ломал голову над заменой GUID`у в ограниченной распределенной системе. Задача: имеем N несвязанных БД, документы из которых в итоге сливаются в одну. Например клиенты банка в оффлайне готовят платежки, затем пересылают в банк, каждой платежке надо присвоить уникальный id. Пример надуманный, для общего понимания задачи. При ожидаемом общем количестве записей менее 1 млрд. обычного int с запасом хватает, но т.к. распределенная система невозможно гарантировать уникальность, поэтому счетчики не подходят. GUID задачу решает, но тормоза из-за размера, 16 байт на id: база быстро пухнет от хранения и выборки в разы замедяляются. Решение: выдаем каждой БД уникальное простое число (шаг счетчика) не меньше заданного (это константа, минимум), далее счетчиком генерим последовательность с этим шагом. Остатается только пропустить те значения где при разложении на множители есть простые больше минимума. Т.е. задаем какой-то минимум для всей системы, например 1000, и дальше выдаем простые последовательно каждой базе (1009,1013,1019... тысячной базе 9433) по сути это ID базы. Например база с ID 1013 генерит последовательность 1013, 2026, 3039 ... пропуская пересечения с другими последовательностями (например 1022117 = 1009*1013). Остается сделать проверку что нет простого делителя больше заданного минимума. В итоге получаем боле-мене равномерное использование всего диапазона 2^32 Побочный эффект по конкретному значению можно вычислить ID базы которая его сгенерила. Только придумал, не тестил, но вроде должно взлететь. Надо еще над выбором минимума подумать. PS была мысль раздавать диапазоны id (например 1000-1999, 2000-2999, 3000-3999 ...) и по мере использования выдавать следующий, оно более линейно, но тоже не идеально, диапазон кончился, связи с раздающим нет, все встало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 12:53 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T Решение: выдаем каждой БД уникальное простое число Чего уж там мелочиться. Сделай вэб сервис, который выдаем уникальный ID для зарегитрировавшегося на нем. И все! Осталось за малым, то чтобы этот стандарт приняли все разработчики. Собственно по такому принципу и MAC адреса распределяются. Так как после разработки device, фирма должна обратиться к некой организации, которая отвечает за распределение MAC ... и получить лицензию на допустимый диапазон MAC для производимых device. PS: Далее выдержка из https://ru.wikipedia.org/wiki/GUID Алгоритм, который Microsoft использовала для генерации GUID, был широко раскритикован. В частности, в качестве основы для генерации части цифр GUID использовался MAC-адрес сетевого адаптера, что означало, например, что по данному документу MS Word (также получающему при создании свой уникальный GUID) можно было определить компьютер, на котором он был создан. Позже Microsoft изменила алгоритм таким образом, чтобы он не включал в себя MAC-адрес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 13:53 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Владимир2012, чтобы флудить не в тему есть отдельный форум . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 14:51 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Потестил. Не взлетело. Слишком много пропускать надо, 50-70% пропусков. Дорогая плата за расширяемость. Если дополнительно максимальное простое ограничить, то пропусков значительно меньше, но с фиксированным максимумом проще классическое решение: задаем уникальное исходное значение <max и увеличиваем счетчик шагом max. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 16:22 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
[quot Dima T Задача: имеем N несвязанных БД, документы из которых в итоге сливаются в одну. Например клиенты банка в оффлайне готовят платежки, затем пересылают в банк, каждой платежке надо присвоить уникальный id. Пример надуманный, для общего понимания задачи. При ожидаемом общем количестве записей менее 1 млрд. обычного int с запасом хватает, но т.к. распределенная система невозможно гарантировать уникальность, поэтому счетчики не подходят. GUID задачу решает, но тормоза из-за размера, 16 байт на id: база быстро пухнет от хранения и выборки в разы замедяляются. Решение: выдаем каждой БД уникальное простое число (шаг счетчика) не меньше заданного (это константа, минимум), далее счетчиком генерим последовательность с этим шагом. Остатается только пропустить те значения где при разложении на множители есть простые больше минимума. .... [/quot] Что ж так сложно то... В первой базе генерим id вида k*N+0, во второй - k*N+1, в третьей k*N+2, ..., в N-ной базе - k*N+(N-1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 18:00 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
?Что ж так сложно то... В первой базе генерим id вида k*N+0, во второй - k*N+1, в третьей k*N+2, ..., в N-ной базе - k*N+(N-1). Уже написал что к этому все приходит 17505147 Тут жесткое ограничение по N, т.е. с появлением N+1 базы будет большая проблема. Хотел избавиться от ограничения по N, получается непрактично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 20:34 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TТ.е. задаем какой-то минимум для всей системы, например 1000, и дальше выдаем простые последовательно каждой базе (1009,1013,1019... тысячной базе 9433) по сути это ID базы. Например база с ID 1013 генерит последовательность 1013, 2026, 3039 ... пропуская пересечения с другими последовательностями (например 1022117 = 1009*1013). Остается сделать проверку что нет простого делителя больше заданного минимума. В итоге получаем боле-мене равномерное использование всего диапазона 2^32 Побочный эффект по конкретному значению можно вычислить ID базы которая его сгенерила. Только придумал, не тестил, но вроде должно взлететь. Надо еще над выбором минимума подумать. PS была мысль раздавать диапазоны id (например 1000-1999, 2000-2999, 3000-3999 ...) и по мере использования выдавать следующий, оно более линейно, но тоже не идеально, диапазон кончился, связи с раздающим нет, все встало. Данную задачу можно решить 1000 способами. Но самое главное - дать точный ответ на вопрос какие требования ты выставляешь к последовательности. Самый последний вариант (диапазоны id) - вполне себе рабочий. Используй его. А для линейной гистограммы можно сделать расширение разрядной сетки до 128 бит. Потом shuffle всех битов по одной постоянной схеме или еще сделать несколько раундов различных операций с полученным целым. Данная схема вполне рабочая но не криптостойкая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 20:43 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Чего уж там мелочиться. Сделай вэб сервис, который выдаем уникальный ID для зарегитрировавшегося на нем. И все! Осталось за малым, то чтобы этот стандарт приняли все разработчики. Собственно по такому принципу и MAC адреса распределяются. Это неверно. Дима-ж пишет что сеть БД несвязная. Тоесть должен сущестовать децентрализованный но раздельный механизм генерации GUID. Никаких веб-сервисов. Тоесть это 3-й тип систем по теореме Брюера. У нее есть только availability + partition tolerance (AP). А отсылка к МАС-вообщем-то не по сути. Есть много способов перепрограммировать механизм генерации GUID и МАС/sysdate/IP это просто один из множества способов получить начальное состояние. P.S. Кстати поведение протокола с МАС+GUID совершенно недетрминированно в случае если на сервере мы меняем местами две сетевушки в слотах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 20:52 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonДанную задачу можно решить 1000 способами. Но самое главное - дать точный ответ на вопрос какие требования ты выставляешь к последовательности. Логи надо писать в моей распределенной системе сообщений: кто-кому-когда-чего. В идеале должно фоном копиться и на сервер скидываться по мере возможности, лог надо вести за 1-2 последних месяца, в этом промежутке времени желательно чтобы сообщение имело уникальный ID, чтобы просто сводить логи отправителя и получателя. Сейчас каждый сам генерит ID сообщений, для передачи хватает т.к. срок жизни в кэше получателя = время доставки + минута, если совпало в этом промежутке - есть механизм смены ID, можно конечно извратиться и их использовать, но копаться в таких логах неудобно будет. Сообщений между всеми меньше миллиона в месяц. Т.е. в идеале ID должно быть 7-8 разрядное число. Пока раздача диапазонов приоритетный вариант. Думал может простым числам тут применение найдется. В принципе идея неплохая: выдал один раз каждому узлу по уникальному числу и пусть генерит ID по кругу, лишь бы повторы не чаще раз в 2 месяца, но есть узлы где где всего 10-20 сообщений в сутки, есть 5-10 тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 21:56 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonЭто неверно. Дима-ж пишет что сеть БД несвязная. Тоесть должен сущестовать децентрализованный но раздельный механизм генерации GUID.Dima T Извиняюсь за флуд. GUID привел в пример потому, что на форумах не встречал ни каких других подходов к получению уникального кода. GUID имеет некоторую структуру ... Было бы весьма не плохо создать какой-то другой механизм создания уникальных кодов, который бы позволил и код генерировать меньшей длины и по возможности нести в себе какие-либо данные об объекте /коды базы, табельный номер, ... .../. Вполне допускаю, что это может быть ссылка к данным об объекте. Возьмем к примеру какой-либо handle /файлу, .../. Он всегда уникальный /обычно это ссылка к данным какого-либо блока памяти/ ... Вообщем то задумка у тебя довольно интересная. PS: mayton. Знаешь я далеко не льстец /и тем более не грубиян/. Но +5 за твой последний ответ. Таким бы таким тоном и конструктивом шли обсуждения, то было бы просто здорово ... /однозначно буду перенимать такой подход/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2015, 22:53 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Владимир2012GUID привел в пример потому, что на форумах не встречал ни каких других подходов к получению уникального кода. Выше 17505369 классический подход генерации ID для распределенных БД. По большому счету все подходы (в т.ч. GUID) сводятся к тому чтобы выдать каждому генератору какую-то уникальную константу, к которой генератор добавляет свое уникальное число по заданному алгоритму. Т.е. константа определяет диапазон в котором работает генератор. А дальше конкретные реализации, связанные с оптимизацией ради уменьшения размера ID. Все оптимизации сводятся к ограничению количества констант и диапазона в котором может работать конкретный генератор. Разрядности 128 бит GUID`а достаточно чтобы не заморачиваться что в один прекрасный день кончатся ID или невозможно будет выдать очередную константу новой базе, но во-первых базы раздуваются в разы по сравнению с int, как следствие в разы замедляются выборки. И во-вторых банальное желание покопаться руками в базе (в поисках какого-нибудь косяка) превращается в кошмар: запомнить/записать 7-8 цифр обычного ID элементарно, а 36 знаков GUID`a - уже проблема. Как-то решал эту проблему двумя ID: int для внутреннего использования в рамках одной базы, GUID для репликации с другими. Не скажу что решение идеальное, один из компромиссов между скоростью выборки и свободой от ограничений по разрядности. По поводу анонимности: она нужна далеко не всегда, но нынешнее маниакальное желание всяких вэб-сервисов собрать максимум инфы о пользователях немного напрягает и заставляет задумываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 08:32 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TРазрядности 128 бит GUID`а достаточно чтобы не заморачиваться что в один прекрасный день кончатся ID или невозможно будет выдать очередную константу новой базе А что если UNIQ /наш аналог GUID/ будет переменной длины. Т.е. в нем скажем 0-й бит 1-го байта имеет значение: == 0 - UNIQ фиксированной длины; == 1 - UNIQ переменной длины; /даже пока не рассматриваю проблемы SQL баз у которых обычно нет эффективного механизма с манипуляциями и хранением данных переменной длины/. Почему так. Возьмем скажем Microsoft. У них GUID в применении скажем к COM это не просто уникальный ключ, но и ссылка к одной или нескольким веткам реестра /в котором хранятся дополнительные данные об UNIQ/. Подход /как по мне/ - правильный. Так вот сделать архитектуру нашего UNIQ гибкую и расширяемую /может быть даже завязанную с некой базой UNIQs (но ни как не привязанной к реестру)/. PS: Конечно сказанное мной немножко сумбурно и не связанно. Просто вот как бы рассказал немного о том чего бы хотелось иметь. Если удастся решить этот вопрос, то думаю он вполне потянет на новый документ в RFC ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 09:04 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TСделал пример многопоточного использования multi_prime.cpp В 4 потока на 4 ядрах посчитал до 10^9 за <0,5 сек :) Код: plaintext 1. 2. PS Сделал потоки на WinAPI, под линуксом не соберется. Поздравляю! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2015, 10:06 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38934308&tid=2017971]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
96ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 476ms |

| 0 / 0 |
