Nano Hash - криптовалюты, майнинг, программирование

Есть ли хороший способ узнать, может ли компьютер запускать определенную программу/программное обеспечение?

Есть ли хороший способ узнать, способен ли компьютер запускать программу/программное обеспечение без каких-либо проблем с производительностью, используя чистый JavaScript (Google V8), C++ (Windows, Mac OS и Linux), требуя как можно меньше информации от создателя программного обеспечения (например, оценка процессора, оценка графического процессора)?

Таким образом, я могу дать своим пользователям четкое представление о том, достаточно ли хорош их компьютер для запуска программного обеспечения, поэтому пользователю не нужно загружать и устанавливать его с самого начала, если он не сможет его запустить. так или иначе.

Я думаю о чем-то вроде индикации на основе «оценки»:

CPU: 230 000   (generic processor score)
GPU: 40 000    (generic GPU score)
+ Network/File I/O read/write requirements

Таким образом, я могу только вычислить эти оценки на компьютере пользователя, а затем сравнить их, пока я использую один и тот же алгоритм, но я понятия не имею о каком-либо таком алгоритме, которого было бы достаточно для реального программного обеспечения. для настольных компьютеров.


  • Какое программное обеспечение? Игра, утилита для обработки чисел, продукт с интенсивным использованием сети, приложение с ограниченным вводом-выводом? Существует так много разных переменных, и вы дали нам так мало представления о том, что вы пытаетесь определить. 04.05.2012
  • Все виды. Я знаю, что есть много переменных, поэтому вопрос, может быть, возможна какая-то индикация, если я получу некоторую информацию от создателя программного обеспечения. 04.05.2012
  • Смотрите мой ответ ниже. Ответ (может ли компьютер запускать его или нет) больше зависит от установленных библиотек/драйверов/оборудования, чем от возможностей процессора/графического процессора. Писать тесты для драйверов/библиотек может быть сложнее, но ненамного. 04.05.2012

Ответы:


1

Я бы предложил тестировать на наличие конкретных библиотек и окружения (версия ОС, наличие видеокарты, работающие звуковые драйвера, DirectX, OpenGL, Gnome, KDE). Назначьте приоритеты для этих библиотек и сделайте сравнение, используя приоритеты, например. наличие видеокарты важнее наличия KDE.

Проблема в том, что даже устаревшее оборудование может запускать большую часть программного обеспечения без проблем (только медленнее), но новейшее оборудование не может запускать некоторые программы без установки требований.

Например, я могу запустить Firefox 11 на своем Pentium III Coppermine (используя FreeBSD и X-сервер), но если вы установите Windows XP на новейшее оборудование с шестиядерным процессором i7 и nVidia GTX 640, он все равно не сможет запускать игры DirectX 11.

Этот метод не требует помощи от создателя программного обеспечения, но не является точным на 100%. Если вы хотите получить точную информацию на 90+%, попросите создателя программного обеспечения поставить 5-6 галочек перед загрузкой. Пример:

  • Моему приложению требуется ускорение DirectX/OpenGL/3D
  • Моему приложению требуется звук
  • Для моего приложения требуется Windows Vista или более поздняя версия
  • Моему приложению требуется сетевое подключение [с высокой пропускной способностью]

затем вы можете тестировать определенные приложения, используя информацию из этих флажков.

Изменить: я думаю, что дополнительные проверки могут быть:

  • видео/аудио кодеки
  • версия пиксельного/вершинного/геометрического шейдера, ускорение физики на GPU (может иметь решающее значение для игр)
  • больше не связано: расширения процессора (SSE2 MMX и т. д.)
  • стороннее программное обеспечение, такое как pdf, flash и т. д.
  • системные библиотеки (libpng, libjpeg, svg)
  • версия системы (номер пакета обновлений, версия ОС (премиум профессионал и т. д.)
  • оконный менеджер (для работы некоторых приложений в OSX требуется X11, некоторые приложения в Linux работают только в KDE и т. д.)

Это фактические требования, которые я (и многие другие) видели при установке различного программного обеспечения.

Что касается старого оборудования, если компьютер удовлетворяет требованиям к оборудованию (версия пиксельного шейдера, расширения процессора и т. д.), то есть веские основания полагать, что программное обеспечение будет работать в системе (возможно, медленнее, но для этого и нужны бенчмарки, если они вам нужны). ).

04.05.2012
  • Так что в целом: приоритет обновленного программного обеспечения (библиотек) перед старым оборудованием, это правильно? Кроме того, можете ли вы добавить больше таких хороших вопросов, которые вы сочтете полезным включить, которые не объясняются сами по себе (пользователь, вероятно, понимает, что ему нужно звуковое устройство, если он / она хочет воспроизводить музыку), такие как ускорение DirectX / OpenGL / 3D. Спасибо 04.05.2012
  • Без проблем. Я добавил больше вопросов (требований), см. редактирование. 09.05.2012

  • 2

    Для графических процессоров я не думаю, что получение оценки можно использовать/возможно без запуска некоторого кода на машине, чтобы проверить, соответствует ли машина спецификации. В графическом процессоре это обычно проверка того, какие шейдерные модели он может использовать, и либо установка по умолчанию более низкой модели шейдера (таким образом, сложность приложения становится менее «качественной»), либо сообщение им, что у них нет надежды запустить код и, таким образом, уход.

    04.05.2012
  • Я запущу некоторый код, чтобы попытаться сделать хорошее предложение, способен ли компьютер запускать программное обеспечение или нет. Спасибо, что рассказали Shader Models, знаете ли вы что-то еще, что часто бывает важно проверить? благодарю вас 04.05.2012
  • Память, скорость (количество ядер и т. д.). По сути, сначала потребуется небольшое исследование с вашей стороны. Вам понадобится представление о том, сколько приложение нагружает графический процессор (пропускная способность: средний расчет на пиксель и т. д.), тогда вы можете сравнить это с возможностями поколения карты, а затем, возможно, порекомендовать настройку, которую может выбрать пользователь, или, может быть, вы принудительно один. В зависимости от того, что вы на самом деле делаете, это может быть довольно сложным процессом. 04.05.2012
  • Возможно, вы захотите обобщить, что это какой-то значимый способ сократить постоянно возрастающую сложность. Шейдерная модель, память, вероятно, является хорошим началом и, возможно, конечной точкой, в зависимости от того, что вы делаете. 04.05.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..