|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||||
Варианты конвертации bool/byte/int в byte/int11.01.2019, 12:56. Показов 6222. Ответов 102
Метки нет (Все метки)
В Си, если мне не изменяет память можно наоборот любые данные интерпретировать как true/false. А вот меня интересует преобразование числовых данных отличных от нуля в единицу, а нулевых значений в ноль.
Я воспользовался уже двумя реализациями (на самом деле есть еще две, но они сильно зависят от контекста и не являются универсальными), и по производительности остановился на первой: 1)
0
|
||||||||||||||||
| 11.01.2019, 12:56 | |
|
Ответы с готовыми решениями:
102
int в byte
Ошибка после конвертации метода на С++ к С#: "Неявное преобразование типа "int" в "bool" невозможно" |
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
||||||
| 18.01.2019, 03:56 | ||||||
|
Чуть ускорил, теперь считает за три секунды.
Кликните здесь для просмотра всего текста
0
|
||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 18.01.2019, 05:31 [ТС] | |||
|
2260798720 : 50585009280 : 00:07:33.2875009 ваше 2015854720 : 00:00:00.5064325 значения выходные не совпадают. я правильно понимаю что вы упаковываете матрицу в одну переменную int? этого делать не то чтобы не нужно - это не имеет смысла, так как 5 бит - частный случай и при 64 битах упаковывать будет некуда. вы исключили сравнение "каждый с каждым", foreach (var group in ranges.OrderBy(x => x.Begin).GroupBy(x => x.Begin)) является его заменой?
0
|
|||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
||||
| 18.01.2019, 05:51 | ||||
|
0
|
||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||||||
| 18.01.2019, 05:55 | |||||||
0
|
|||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
| 18.01.2019, 06:27 [ТС] | ||||||
|
у вас есть матрица 64х64, чтобы получить все комбинации бит в такой матрице нужно использовать 64 ulong переменные и производить инкремент каждой таким образом, чтобы перебрать все значения. это только даст доступ к исходным данным, теперь у нас есть всё, чтобы с этими данными работать. условно, есть черный ящик, который на входе принимает такие данные, делает вычисления и результаты сравнивает со всеми предыдущими, если находит совпадение, то обозначает это. Финал работы программы - как раз поиск таких совпадений. Добавлено через 5 минут я не вижу в вашей реализации расчета хэша.
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||
| 18.01.2019, 06:39 | |||
|
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 18.01.2019, 06:42 [ТС] | ||
|
1048576 : 2260798720 : 50585009280 : 00:03:27.6732082 моё 2260798720 : 50585009280 : 00:07:33.2875009 как видно - число итераций по проверке сокращено с 2,2 млрд до 1,1 млн. То есть в 2000 раз. вы могли бы прокомментировать добавленные строки?
0
|
||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|||||||
| 18.01.2019, 06:43 | |||||||
|
Здесь два способа подсчета countIn, угадайте почему считает пои разному ? Кликните здесь для просмотра всего текста
0
|
|||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|
| 18.01.2019, 06:44 | |
|
0
|
|
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|||||||||||
| 18.01.2019, 06:56 | |||||||||||
|
Вот для примера два варианта, без СRC8. Первый обычный, второй ускоренный. Оба дают один и тот же ответ.
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||
| 18.01.2019, 11:00 [ТС] | |||||||
|
вы можете убрать мои оптимизации и применять только свои.
0
|
|||||||
|
Модератор
|
|||
| 18.01.2019, 12:44 | |||
|
Вам надо менять теоретическую часть. В лоб такую задачу не решить. Время решения задачи у Вас пропорционально четырём в степени стороны матрицы. Поэтому придумывать способы оптимизации для размеров 5х5, 10х10, 15х15 и т.д. - смысла нет. Конечное время, для 64х64 всё равно останется недопустимо большим. Добавлено через 9 минут
0
|
|||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||
| 18.01.2019, 18:03 | |||
|
Так же не понятно чем применение хэша может ускорить ваши вычисления, т.к. для вычисления хэша нужно пройтись по всем байтам, не проще ли сразу без всяких хэшей это делать? Так же сравнивать по 1 байту гораздо медленней, чем скажем по 4 или 8... Вот по идее неплохой шэш, есть 2 варианта на 32 и 64 бита, всяко лучше чем ваш 8 битный... https://github.com/differentra... /XXHash.cs Или такой на 128 бит... http://blog.teamleadnet.com/20... rithm.html Убраны повторяющиеся вызовы BitCount (они в конечном итоге были вообще заменены простым массивом...). Уменьшено обращение к полям класса (доступ к локальным переменным быстрее), некоторые значения так же сохранены в локальные переменные по той же причине. В нескольких местах использован unsafe код, чтобы избежать лишних проверок на выход за границы массива...
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||
| 18.01.2019, 21:18 [ТС] | ||||||||
int a = DimBits[x].Hash; если написать int hash= DimBits[x].Hash; int a = hash; это будет быстрее? Мне кажется это не так, первые строки в обоих вариантах одинаковые, а во втором варианте ещё одна операция добавляется. Или вы про то, что в цикле лучше обращаться к локальной переменной?
0
|
||||||||
|
Модератор
|
||
| 18.01.2019, 21:41 | ||
|
Если да, то решать такую задачу перебором ближайшие несколько тысяч лет не научатся. Надо упрощать как-то, сводить до реализуемых значений.
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||
| 18.01.2019, 23:12 [ТС] | ||||
|
Прямо сейчас переделал код под ваши (всех участников) рекомендации, чуть позже еще CRC32 попробую прикрутить. НО даже этих небольших изменений было достаточно для еще 12% прироста в скорости. Я думаю от 20 до 50% ещё есть реальная возможность улучшить, а это уже 2-2,5 минуты. Через месяц-два у меня будет своё чуть более производительное железо, что даст 1,5-2 минуты для 4х5 и я попробую уже 8х8.
0
|
||||
|
Модератор
|
||
| 18.01.2019, 23:30 | ||
|
В таком случае 8^8 - это 2^64 комбинаций. Даже если Вы сможете на новом железе, на графической карте вычислять 4х5 за 1 секунду для 8^8 потребуется полмиллиона лет. Даже если Вы будете считать это на суперкомпьютере для это потребуются годы. И это только для варианта 8х8. Добавлено через 4 минуты В Вашей методике расчёта даже варианты 63х63 и 64х64 отличаются в вычислительной сложности в 2^127 раз. Добавлено через 1 минуту Меняйте саму теорию методики расчёта. В лоб это в принципе не решить никогда! Ну, может, пока только фантастические, квантовые компьютеры.
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 18.01.2019, 23:33 [ТС] | |
|
0
|
|
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|
| 18.01.2019, 23:36 | |
|
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 19.01.2019, 10:49 [ТС] | |||
|
Добавлено через 11 часов 10 минут Основные изменения - unsafe обращение к массивами, замена вызовов локальными переменными.
0
|
|||
| 19.01.2019, 10:49 | |
|
преобразование ref byte в byte[] или в IntPtr без использования неуправляемого кода
Пердача byte[] COM-функции, ожидающей ref byte wav byte[] в flac byte[]
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|