Больше года мне свербило, как бы в c# изобрести способ для прохода по всем полям класса в цикле для совершения однотипных проверок или манипуляций с классом.
Например, есть у меня здоровенный класс для хранения данных. Фронтэнд посылает мне их кусочками, 1-2 поля с содержанием, остальные - null. Как бы устроить постепенное обновление класса?
Самый напрашивающийся способ - обновлять каждое поле отдельно. Но полей - много, и их состав будет меняться с течением времени, потому этот вариант неудобен: каждый раз при изменении структуры класса надо не забыть доработать и реализацию обновления.
Нашел таки обращённый способ: в c# оказывается можно взять все поля определенного типа, после чего с их помощью работать с полями любого экземпляра этого класса.
Пример прикрепляю ниже.
#csharp
Например, есть у меня здоровенный класс для хранения данных. Фронтэнд посылает мне их кусочками, 1-2 поля с содержанием, остальные - null. Как бы устроить постепенное обновление класса?
Самый напрашивающийся способ - обновлять каждое поле отдельно. Но полей - много, и их состав будет меняться с течением времени, потому этот вариант неудобен: каждый раз при изменении структуры класса надо не забыть доработать и реализацию обновления.
Нашел таки обращённый способ: в c# оказывается можно взять все поля определенного типа, после чего с их помощью работать с полями любого экземпляра этого класса.
Пример прикрепляю ниже.
#csharp
Program.cs
1.2 KB
В примере я вливаю данные, не равные null, из экземпляра тестового класса update в экземпляра data.
Для воспроизведения нужен установленный на компьютере .Net и любая IDE под c#
Для воспроизведения нужен установленный на компьютере .Net и любая IDE под c#
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Футуристъ)
Видел сравнения нынешнего дистанционного образования с заочным. Но насколько корректно это сравнение? Из названия делают неверный вывод, что преподаватель не видит студента, но можно залезть глубже и сравнить образовательные программы.
В учебных планах одно из основных различий — соотношение часов, выделенных на работу с преподавателем и самостоятельную работу. На очном образовании цифра примерно 50 на 50, для магистратуры — 40 на 60. Да, при составлении программы предполагается, что студент занимается самостоятельно примерно столько же, сколько сидит на лекциях.
В учебных планах заочников соотношение несколько другое: на самостоятельную работу отводится около 90% нагрузки. То есть формат занятий тут такой: выдается список литературы для самостоятельного изучения, после чего 3-4 раза можно приехать в институт задать преподавателю вопросы. А потом добро пожаловать на экзамен.
Похоже это на занятия, проводимые дистанционно в Zoom? С начиткой лекций в том же объеме, что и в обычное время и возможностью не отходя от кассы задать преподавателю вопрос? Единственное большое упущение в нынешней ситуации — отсутствие возможностей для проведения очных лабораторных работ, о чем писали ранее.
При этом, нагрузка на преподавателей выросла: нужно переходить на новые форматы контроля знаний, да и работа с домашними заданиями в электронном виде для многих в новинку.
В этом разрезе интересно звучат требования по пересчету суммы за обучение платникам. Надо бы посчитать: если вычесть из суммы затраты на эксплуатацию помещений и прибавить сверхурочный труд преподавателей, кто останется в плюсе?
Eshu Marabo
В учебных планах одно из основных различий — соотношение часов, выделенных на работу с преподавателем и самостоятельную работу. На очном образовании цифра примерно 50 на 50, для магистратуры — 40 на 60. Да, при составлении программы предполагается, что студент занимается самостоятельно примерно столько же, сколько сидит на лекциях.
В учебных планах заочников соотношение несколько другое: на самостоятельную работу отводится около 90% нагрузки. То есть формат занятий тут такой: выдается список литературы для самостоятельного изучения, после чего 3-4 раза можно приехать в институт задать преподавателю вопросы. А потом добро пожаловать на экзамен.
Похоже это на занятия, проводимые дистанционно в Zoom? С начиткой лекций в том же объеме, что и в обычное время и возможностью не отходя от кассы задать преподавателю вопрос? Единственное большое упущение в нынешней ситуации — отсутствие возможностей для проведения очных лабораторных работ, о чем писали ранее.
При этом, нагрузка на преподавателей выросла: нужно переходить на новые форматы контроля знаний, да и работа с домашними заданиями в электронном виде для многих в новинку.
В этом разрезе интересно звучат требования по пересчету суммы за обучение платникам. Надо бы посчитать: если вычесть из суммы затраты на эксплуатацию помещений и прибавить сверхурочный труд преподавателей, кто останется в плюсе?
Eshu Marabo
Telegram
Русский Футурист
Был на прошлой неделе в универе (технический ВУЗ), по стенам через каждые 5 метров развешаны санитайзеры, все в масках. А с 13 ноября всех студентов принудительно разогнали на дистанционку.
В целом, не вижу большой беды в массовом переходе на онлайн образование…
В целом, не вижу большой беды в массовом переходе на онлайн образование…
С ботокрещением тебя!
В http там изучать нечего особо (для работы с готовым API). Да и не нужно: под все популярные языки программирования есть свои реализации BotApi, даже под ассемблер блин.
В http там изучать нечего особо (для работы с готовым API). Да и не нужно: под все популярные языки программирования есть свои реализации BotApi, даже под ассемблер блин.
Telegram
СЛЕГ!
В итоге вчерашней эпопеи написал первого "настоящего" бота за все время. На скрине ответ на неочевидный вопрос, куда совать бот-токен полученный у отца всех ботов. Слава создателю telethon, что не надо изучать бот-api и использовать https. Всё происходит…
Forwarded from умный холодильник
Шпионский робот-пылесос
Безопасники снова взялись за умные устройства. Атака LidarPhone способна превратить робот-пылесос в шпионское устройство, подслушивающее разговоры.
С опаской смотрю на своего Роберта.
Атака возможна благодаря лидару, с помощью которого пылесос ориентируется в пространстве и отличает кошку от табуретки. Злоумышленник может использовать лидар и его лазер как лазерный микрофон. Такие микрофоны способны слушать информацию на расстоянии.
Кибершпане нужно получить контроль над лидаром. Это возможно, если вмешаться в процесс обновления прошивки или накормить пылесос зловредом.
Лазерные микрофоны отслеживают вибрации поверхности, которые потом можно декодировать и расшифровать беседу. Тут есть проблемки: пылесос мотает лидаром, что сокращает возможности прослушки. Но хакер может заставить пылесос сфокусироваться на одном объекте с помощью вредоноса.
В любом случае лидары пылесосов не так точны, как лазерные микрофоны. Но исследователи всё равно смогли получить хорошие результаты во время тестов на роботе-пылесосе Xiaomi Roborock.
Снова с опаской смотрю на своего Роберта.
Эксперты несколько раз попробовали снять сигнал с разных объектов и на разном расстоянии. Правда, эксперименты сосредоточились на восстановлении чисел, а не текста. Точность составила 90 %.
Безопасники утверждают, что LidarPhone можно использовать, чтобы выяснить пол тех, кто болтает возле пылесоса, и даже их политические взгляды по выпускам новостей, звучащих на фоне.
Безопасники снова взялись за умные устройства. Атака LidarPhone способна превратить робот-пылесос в шпионское устройство, подслушивающее разговоры.
С опаской смотрю на своего Роберта.
Атака возможна благодаря лидару, с помощью которого пылесос ориентируется в пространстве и отличает кошку от табуретки. Злоумышленник может использовать лидар и его лазер как лазерный микрофон. Такие микрофоны способны слушать информацию на расстоянии.
Кибершпане нужно получить контроль над лидаром. Это возможно, если вмешаться в процесс обновления прошивки или накормить пылесос зловредом.
Лазерные микрофоны отслеживают вибрации поверхности, которые потом можно декодировать и расшифровать беседу. Тут есть проблемки: пылесос мотает лидаром, что сокращает возможности прослушки. Но хакер может заставить пылесос сфокусироваться на одном объекте с помощью вредоноса.
В любом случае лидары пылесосов не так точны, как лазерные микрофоны. Но исследователи всё равно смогли получить хорошие результаты во время тестов на роботе-пылесосе Xiaomi Roborock.
Снова с опаской смотрю на своего Роберта.
Эксперты несколько раз попробовали снять сигнал с разных объектов и на разном расстоянии. Правда, эксперименты сосредоточились на восстановлении чисел, а не текста. Точность составила 90 %.
Безопасники утверждают, что LidarPhone можно использовать, чтобы выяснить пол тех, кто болтает возле пылесоса, и даже их политические взгляды по выпускам новостей, звучащих на фоне.
умный холодильник
Шпионский робот-пылесос Безопасники снова взялись за умные устройства. Атака LidarPhone способна превратить робот-пылесос в шпионское устройство, подслушивающее разговоры. С опаской смотрю на своего Роберта. Атака возможна благодаря лидару, с помощью…
Ссылка в репосте оказалась битой, вот рабочая ссылка на то же самое исследование.
Прочту статью, выскажусь по теме в Футуризм или сюда.
Прочту статью, выскажусь по теме в Футуризм или сюда.
Эшу быдлокодит
Ссылка в репосте оказалась битой, вот рабочая ссылка на то же самое исследование. Прочту статью, выскажусь по теме в Футуризм или сюда.
Вообще, лидар - это дальномер. До чего же дошла техника, что по показаниям дальномера из робота-пылесоса можно считать звук! Ведь физический принцип регистрации звука в описанном эксперименте таков: фиксируется, насколько вы своими голосами деформируете стены и другие твердые приборы у вас дома.
Для оптики это более-менее фиксируемые величины: порядка сотен нанометров, но звук забивается шумами и вибрациями большого города: то же метро чувствительно (для оптики) сотрясает землю в радиусе около километра, если не больше.
Следующей проблемой стало то, что лидар в роботе-пылесосе хреновенький, при этом, если правильно его хакнуть, частота регистрируемых им данных составит 1.8 кГц, минимальная необходимая для нормальной записи голоса частота - 5 кГц.
В итоге ученые, используя всю мощь современной цифровой обработки сигналов, сумели подавить шумы окружающей среды, но проблема низкого качества звука никуда не делась. Для её решения использовались нейросети: их обучили восстанавливать звук, фиксированный на микрофон с недостаточной частотой измерения. В итоге результатом всех этих манипуляций стало достижение 90%й точности фиксации голоса человека, что очень даже неплохо.
Смогут ли злоумышленники пройти этот путь, чтобы шпионить за вами - думайте сами.
Для оптики это более-менее фиксируемые величины: порядка сотен нанометров, но звук забивается шумами и вибрациями большого города: то же метро чувствительно (для оптики) сотрясает землю в радиусе около километра, если не больше.
Следующей проблемой стало то, что лидар в роботе-пылесосе хреновенький, при этом, если правильно его хакнуть, частота регистрируемых им данных составит 1.8 кГц, минимальная необходимая для нормальной записи голоса частота - 5 кГц.
В итоге ученые, используя всю мощь современной цифровой обработки сигналов, сумели подавить шумы окружающей среды, но проблема низкого качества звука никуда не делась. Для её решения использовались нейросети: их обучили восстанавливать звук, фиксированный на микрофон с недостаточной частотой измерения. В итоге результатом всех этих манипуляций стало достижение 90%й точности фиксации голоса человека, что очень даже неплохо.
Смогут ли злоумышленники пройти этот путь, чтобы шпионить за вами - думайте сами.
В общем-то у меня дипломная работа была как раз про запись звука с помощью лазерного излучения, правда у нас был чуть другой сетап установки: вместо лазера, направленного на твердую поверхность, был лазерный свет идущий по оптическому волокну.
Суть эксперимента такая: лазерный свет разделяется между двумя волокнами: опорным, где он не петерпевает никаких воздействий и измерительным, воздействие на которое мы пытаемся фиксировать. Воздействие - звуковые колебания - немного растягивают и сжимают волокно, потому свет в нем обретает небольшую дополнительную задержку.
После этого с помощью небольшой магии (волоконно-оптический разветвитель 3х3, суть магии описывается 10 страницами решения системы дифференциальных уравнений) и коротенького скрипта в SciLab можно фиксировать звук. В общем получается классический интерферометр, очень похожий по сути и математическому аппарату на тот, что у меня в диссертации используется, только вместо здоровенного микроскопа в 50 кг на столе валяются мотки желтенького оптического волокна.
Мы пытались регистрировать воздействия, передающиеся через воздух, но потерпели фиаско, видимо для нормального результата надо было использовать концертные колонки. Потом попробовали подать звук по модели твердой среды (пьезокерамический элемент), и даже получилось. Без всяких математических шаманств качество звука получилось вполне достойное, аудиофайл записи, пропущенной через пьезокерамику, волокно и записанной прикладываю ниже.
Суть эксперимента такая: лазерный свет разделяется между двумя волокнами: опорным, где он не петерпевает никаких воздействий и измерительным, воздействие на которое мы пытаемся фиксировать. Воздействие - звуковые колебания - немного растягивают и сжимают волокно, потому свет в нем обретает небольшую дополнительную задержку.
После этого с помощью небольшой магии (волоконно-оптический разветвитель 3х3, суть магии описывается 10 страницами решения системы дифференциальных уравнений) и коротенького скрипта в SciLab можно фиксировать звук. В общем получается классический интерферометр, очень похожий по сути и математическому аппарату на тот, что у меня в диссертации используется, только вместо здоровенного микроскопа в 50 кг на столе валяются мотки желтенького оптического волокна.
Мы пытались регистрировать воздействия, передающиеся через воздух, но потерпели фиаско, видимо для нормального результата надо было использовать концертные колонки. Потом попробовали подать звук по модели твердой среды (пьезокерамический элемент), и даже получилось. Без всяких математических шаманств качество звука получилось вполне достойное, аудиофайл записи, пропущенной через пьезокерамику, волокно и записанной прикладываю ниже.
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Написание ботов для телеграма — одно из самых распространённых развлечений программистов, обычно начинающих.
В принципе, бот достаточно удачный выбор личного проекта для саморазвития. Более-менее качественная документация, большое число коллег имевших дело с ботами.
Начать писать бота очень легко: запрос гуглу вида "язык такой-то телеграм бот" как правило сразу вываливает статью на хабре с рабочими кусками кода. 5 минут и первый бот, не умеющий еще ничего, но уже рабочий, у тебя готов.
При этом, написание сколько-нибудь удобного и функционального бота потребует существенно больше усилий: придется работать с базами данных, ставить ограничения на частоту запросов, продумывать и реализовывать логику.
Собственно, некоторые наши боты — Футуристъ и один из ботов для обратной связи были тем самым проектом для самообразования, которым я занимался в конце лета-начале осени, о чем периодически отписывался в свой дневничек.
Телеграм предоставляет возможность взаимодействовать всем желающим со своей экосистемой. Любой разработчик может начать писать ботов на любом языке (но на некоторых есть готовые решения для ботов, что сильно упрощает жизнь).
Наткнулся на интересный проект: один итальянец написал телеграм бота на ассемблере под Intel Core i5 6600. Ассемблер - язык позволяющий работать напрямую с процессором — это буквально хтоническое чудовище из прошлого. Один из наиболее оторванных от обыденности языков программирования, занимающий узкую нишу взаимодействия непосредственно с железом, но и оттуда вытесняемый С.
Проект ассемблерного бота — чисто образовательный, не имеющий никакой ценности кроме углубления знаний и радости для программиста, который смог сделать ЭТО. Неслучайно проект называется: Just 4fun Telegram Bot. то бишь "бот чисто для лулзов".
Eshu Marabo
В принципе, бот достаточно удачный выбор личного проекта для саморазвития. Более-менее качественная документация, большое число коллег имевших дело с ботами.
Начать писать бота очень легко: запрос гуглу вида "язык такой-то телеграм бот" как правило сразу вываливает статью на хабре с рабочими кусками кода. 5 минут и первый бот, не умеющий еще ничего, но уже рабочий, у тебя готов.
При этом, написание сколько-нибудь удобного и функционального бота потребует существенно больше усилий: придется работать с базами данных, ставить ограничения на частоту запросов, продумывать и реализовывать логику.
Собственно, некоторые наши боты — Футуристъ и один из ботов для обратной связи были тем самым проектом для самообразования, которым я занимался в конце лета-начале осени, о чем периодически отписывался в свой дневничек.
Телеграм предоставляет возможность взаимодействовать всем желающим со своей экосистемой. Любой разработчик может начать писать ботов на любом языке (но на некоторых есть готовые решения для ботов, что сильно упрощает жизнь).
Наткнулся на интересный проект: один итальянец написал телеграм бота на ассемблере под Intel Core i5 6600. Ассемблер - язык позволяющий работать напрямую с процессором — это буквально хтоническое чудовище из прошлого. Один из наиболее оторванных от обыденности языков программирования, занимающий узкую нишу взаимодействия непосредственно с железом, но и оттуда вытесняемый С.
Проект ассемблерного бота — чисто образовательный, не имеющий никакой ценности кроме углубления знаний и радости для программиста, который смог сделать ЭТО. Неслучайно проект называется: Just 4fun Telegram Bot. то бишь "бот чисто для лулзов".
Eshu Marabo
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Занятно читать про истоки возникновения современного IT. В середине ХХ века были разработаны все основные концепции, которые сейчас используются программистами по всему миру каждый день. Одной из таких концепций стала теория автоматов.
В ее рамках, рассматриваются абстрактные сущности, "автоматы", которые могут выполнять определенный набор действий в зависимости от определенного набора команд, подаваемых из внешнего мира.
В те благословенные дремучие времена такими автоматами вполне можно было адекватно описать ЭВМ: есть набор инструкций (передаваемых, например, с помощью перфокарт), на каждую из них есть строго определенная реакция.
Современный ПК так описать можно, но проще в восприятии от этого он не станет, даже несмотря на то, что набор инструкций процессора по-прежнему конечен. Пусть данные, в предельном упрощении, это набор ноликов и единичек, но концепция автоматов на практике нужна мало: современные языки программирования и парадигмы и так полны абстракций для описания всего на свете.
Зато в качестве элемента (само)образования теория автоматов вполне полезная в подготовке программиста: эта модель описания реальности позволяет посмотреть на модули программного обеспечения с другого ракурса, сосредоточившись на их функциональности, абстрагируясь от нюансов реализации.
Этот подход особенно полезен при тестировании и в геймдеве: состояния юнитов, игровые события, действия игрока, действия ИИ. Всё это должно увязываться в единую схему, понятную не только программистам. Перегружать ее особенностями реализации компонентов совершенно излишне.
Eshu Marabo
В ее рамках, рассматриваются абстрактные сущности, "автоматы", которые могут выполнять определенный набор действий в зависимости от определенного набора команд, подаваемых из внешнего мира.
В те благословенные дремучие времена такими автоматами вполне можно было адекватно описать ЭВМ: есть набор инструкций (передаваемых, например, с помощью перфокарт), на каждую из них есть строго определенная реакция.
Современный ПК так описать можно, но проще в восприятии от этого он не станет, даже несмотря на то, что набор инструкций процессора по-прежнему конечен. Пусть данные, в предельном упрощении, это набор ноликов и единичек, но концепция автоматов на практике нужна мало: современные языки программирования и парадигмы и так полны абстракций для описания всего на свете.
Зато в качестве элемента (само)образования теория автоматов вполне полезная в подготовке программиста: эта модель описания реальности позволяет посмотреть на модули программного обеспечения с другого ракурса, сосредоточившись на их функциональности, абстрагируясь от нюансов реализации.
Этот подход особенно полезен при тестировании и в геймдеве: состояния юнитов, игровые события, действия игрока, действия ИИ. Всё это должно увязываться в единую схему, понятную не только программистам. Перегружать ее особенностями реализации компонентов совершенно излишне.
Eshu Marabo
На 5 курсе я, с подачи заведующего кафедрой, учился не в нашем вузе, а на экспериментальной образовательной программе от корпорации. В комплекте с образованием шло трудоустройство. Всё было прекрасно, но за весь год я был только на одной паре и то по ошибке.
Не все преподаватели отнеслись с восторгам к экспериментам заведующего, потому обе сессии были весёлыми.
С тех пор (прошло уже почти 10 лет) мне периодически снится, что грядет сессия, я пропустил весь семестр, и вот буквально через несколько дней мне надо сдавать нечто ядрёное, замешанное на матане.
Кстати, маму такие сны преследуют и через 30 лет после окончания вуза.
Не все преподаватели отнеслись с восторгам к экспериментам заведующего, потому обе сессии были весёлыми.
С тех пор (прошло уже почти 10 лет) мне периодически снится, что грядет сессия, я пропустил весь семестр, и вот буквально через несколько дней мне надо сдавать нечто ядрёное, замешанное на матане.
Кстати, маму такие сны преследуют и через 30 лет после окончания вуза.
А вам снятся сессии или другие моменты из вуза, связанные с учёбой?
Final Results
48%
Да, было (или есть) весело и страшно.
34%
Нет, всё сдано без проблем
3%
Я не учился в вузе
15%
Посмотреть результаты
Эшу быдлокодит
А вам снятся сессии или другие моменты из вуза, связанные с учёбой?
От подписчика: Мне снится, что я какого-то хрена попал в армию, хотя там уже был
Знакомый учится в Оксфорде, гуманитарная специальность. В качестве вспомогательного языка программирования им будут давать R.
Далее цитата, очищенная от мата, оставлю без дополнительных комментариев:
"У нас в Оксфорде будет целый семестр R
При чем все исследователи прямо говорят что питон раз в сто лучше
Но ему не учат
Так как не могут
Чертовы гуманитарии
Лучший университет мира
Центр знаний с начала тысячелетия
Вот на кой хрен мне ваш R, если питон лучше
Просто социологи обожают R
Ибо питон считается сложным"
Далее цитата, очищенная от мата, оставлю без дополнительных комментариев:
"У нас в Оксфорде будет целый семестр R
При чем все исследователи прямо говорят что питон раз в сто лучше
Но ему не учат
Так как не могут
Чертовы гуманитарии
Лучший университет мира
Центр знаний с начала тысячелетия
Вот на кой хрен мне ваш R, если питон лучше
Просто социологи обожают R
Ибо питон считается сложным"
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Все слышали понятие "база данных" - некоторая совокупность структурированных данных о каком-либо предмете. Кроме него есть другое понятие - "база знаний". В современной it терминологии есть двойственность: базами знаний называют как wiki - подобные справочные системы, так и то, чем они являлись изначально: хранилищами правил обработки информации. Предельное развитие таких баз знаний - экспертные системы.
Экспертные системы позволяли творить магию искусственного интеллекта довольно давно, и, что характерно, без хипстеров-датасатанистов, нейросетей, сопутствующего матана и видеокарт, на которых можно пожарить яичницу.
Разработать экспертную систему относительно несложно, но очень трудозатратно.
Первая задача - разработать формальную модель знаний. Как вариант, это может быть графовая структура, описывающая взаимосвязи между различными фактами.
Приведу простой пример формализованного знания. При машинном анализе русскоязычных предложений нужно найти прилагательные, относящиеся к существительному-подлежащему. Логика подсказывает, что все прилагательные в этом предложении, имеющие тот же род и падеж, что и подлежащее, будут относиться к нему. Совокупность таких правил и исключений к ним позволяет составить базу знаний русского языка.
Модель знаний нужно снабдить удобным интерфейсом для ввода новых и редактивания старых знаний. После этого нужно нанять экспертов, которые сядут и десятки, а то и сотни человеко-лет будут вбивать в систему свои знания и опыт.
Подобные системы позволяют делать многое, например работать ассистентом врача. Недобросовестное отношение при разработке может приводить к катастрофическим последствиям: достаточно вспомнить эпидемию опиатных смертей в США, которая произошла по причине сговора создателя экспертной системы и фарм-компании.
Eshu Marabo
Экспертные системы позволяли творить магию искусственного интеллекта довольно давно, и, что характерно, без хипстеров-датасатанистов, нейросетей, сопутствующего матана и видеокарт, на которых можно пожарить яичницу.
Разработать экспертную систему относительно несложно, но очень трудозатратно.
Первая задача - разработать формальную модель знаний. Как вариант, это может быть графовая структура, описывающая взаимосвязи между различными фактами.
Приведу простой пример формализованного знания. При машинном анализе русскоязычных предложений нужно найти прилагательные, относящиеся к существительному-подлежащему. Логика подсказывает, что все прилагательные в этом предложении, имеющие тот же род и падеж, что и подлежащее, будут относиться к нему. Совокупность таких правил и исключений к ним позволяет составить базу знаний русского языка.
Модель знаний нужно снабдить удобным интерфейсом для ввода новых и редактивания старых знаний. После этого нужно нанять экспертов, которые сядут и десятки, а то и сотни человеко-лет будут вбивать в систему свои знания и опыт.
Подобные системы позволяют делать многое, например работать ассистентом врача. Недобросовестное отношение при разработке может приводить к катастрофическим последствиям: достаточно вспомнить эпидемию опиатных смертей в США, которая произошла по причине сговора создателя экспертной системы и фарм-компании.
Eshu Marabo
Диссертационный проект - это ПО для микроскопа. Нужно на лету обрабатывать поток изображений, представленных в виде массивов чисел (double). Одно из потенциальных узких по производительности мест - скорость копирования данных из массива в массив.
Для того, чтобы определить оптимальный способ копирования, плюс померять некоторые другие параметры я использовал инструмент BenchmarkDotNet 0.12.1. На картинках представлены результаты замеров для массива размером 1000х2000.
По таблицам в иллюстрациях:
CreateNew - замер скорости создания массива
AllItemIter - замер скорости обхода всего массива с присвоением значений.
Clone - замер скорости копирования всего массива с сипользованием стандартного метода Clone()
CopyByItem - замер скорости копирования всех элементов в созданный пустой массив с автоопределением размеров массива
CopyByItemExistSizes -замер скорости копирования всех элементов в созданный пустой массив без автоопределения размеров массива
Недавно вышел релиз платформы .Net 5.0, проводил замеры для нее и прошлой версии - .Net Core 3.1.
Итого, результаты теста:
1. Клонирование массива - самый быстрый вариант. При переходе с .Net Core 3.1 на 5 версию его ускорили в 3(!) раза!
2. Автоопределение размеров массива с помощью метода GetUpperBound() - плохая идея, пустая трата вычислительных ресурсов.
3. При переходе на новую версию в принципе все действия над массивами были чуть ускорены.
Код бенчмарка прикладываю в файле ниже.
#csharp #диссер
Для того, чтобы определить оптимальный способ копирования, плюс померять некоторые другие параметры я использовал инструмент BenchmarkDotNet 0.12.1. На картинках представлены результаты замеров для массива размером 1000х2000.
По таблицам в иллюстрациях:
CreateNew - замер скорости создания массива
AllItemIter - замер скорости обхода всего массива с присвоением значений.
Clone - замер скорости копирования всего массива с сипользованием стандартного метода Clone()
CopyByItem - замер скорости копирования всех элементов в созданный пустой массив с автоопределением размеров массива
CopyByItemExistSizes -замер скорости копирования всех элементов в созданный пустой массив без автоопределения размеров массива
Недавно вышел релиз платформы .Net 5.0, проводил замеры для нее и прошлой версии - .Net Core 3.1.
Итого, результаты теста:
1. Клонирование массива - самый быстрый вариант. При переходе с .Net Core 3.1 на 5 версию его ускорили в 3(!) раза!
2. Автоопределение размеров массива с помощью метода GetUpperBound() - плохая идея, пустая трата вычислительных ресурсов.
3. При переходе на новую версию в принципе все действия над массивами были чуть ускорены.
Код бенчмарка прикладываю в файле ниже.
#csharp #диссер
Telegram
Эшу быдлокодит