Создал я покерный калькулятор и тестирую его на разных компьютерах. Получаются странности со старыми компьютерами. Разница в 1-поточном режиме 32 бита между Core i5 и Pentium4 четырехкратная. Соответственно в мультипотоке, 64 бита i5, 32 бита P4 разница 30х.
[Pentium 4 @ 2.8Ghz, 2GB DDR] Holdem benchmark 32 bit = 302 700 marks (WinXP-32)
[ноутбук 2 ядра 2Ghz] Holdem benchmark 32 bit = 1 266 600 marks (Win32)
[Core 2 Duo @ 3Ghz, 2Gb DDR2-800] Holdem benchmark 32 bit = 2 040 200 marks (WinXP-32-SP3)
[Core i5-750 @ 3.66Ghz; 4GB DDR3 @ 1333] Holdem benchmark 32 bit = 4 786 900 marks (Win7-64) Holdem benchmark 64 bit = 9 156 300 marks (Win7-64)
Помогите протестировать прогу, на АМДхах вообще тестов не было, и на 4+ ядернике.
О спасибо, ценная информация! Почему информация ценная? Да потому, что сложно оптимизировать софт под разные компьютеры. Калькулятор должен отлично работать как на планшетке с Atom, так и на Gulftown@4Ghz, а разница в производительности между ними 100-кратная. [12 потоков * 2(из за 64-битности) * 4(разница в частоте в 4 раза) = 96 раз] А если использовать в программе интерпретацию битовых 64-разрядных инструкций из SSE2, "_BitScanForward64", например, то разница будет еще больше. Получается, что владелец планшетки сможет мгновенно получать точные вероятности для 5 случайных карт, а владелец Gulftown (или Thuban) для 8 случайных карт. И я хочу, чтобы программа могла определять возможности компьютера, чтобы выбирать правильные алгоритмы. Для этого надо знать границы от самого слабого, до самого сильного процессора =)
Поэтому ваши результаты тестов для меня очень важны. Но надо испытать её ещё на Thuban, Gulftown, Atom, к которым у меня совершенно нет доступа.
Member
Статус: Не в сети Регистрация: 23.12.2004 Откуда: Киев
Tiberrg "покерный калькулятор" - имеется ввиду подсчет вероятности победы при данном (случайном) раскладе? Если да, то у меня есть опыт решения такой задачи. Я даже делал бота, который сам играет, кажись на PokerStars. Логика работы простая - поиск на экране своих карт и карт банка. Затем идет тупой перебор вариантов. По времени точно не скажу, при банке в 3 карты пауза заметная, но для игры не критичная; при 4-х картах - еще заметная, но очень быстрая; при 5-ти картах - можно сказать мгновенно. Точное время расчета сходу сказать не могу. Все это опробывалось на C2D 8400@4000. Еще была сделана логика ставок, основываясь на вероятности выиграть.
Достаточно интересная задача для программирования. У меня ее решение оставило положительные ощущения и хороший опыт по непрофильному, в целом, направлению.
>> при банке в 3 карты пауза заметная, но для игры не критичная; при 4-х картах - еще заметная, но очень быстрая; при 5-ти картах - можно сказать мгновенно.
[2 человека] При банке в 3 (990*2 оценок), или 4 (44*2 оценок), или 5 (1*2 оценок).
Как ребята тестировали, C2D E8200 4.0Ghz способен давать в секунду 2 868 500 оценок методом монте-карло на C# и примерно 80млн перебором в C++. То есть "пауза заметная" превращается в доли миллисекунд.
Чтобы перебрать все возможные сочетания карт, например AdKd против JcJs (1712304 оценок силы комбинации) надо 30 миллисекунд для одного потока в C++.
Могу исходники выложить сравнения 64-битной производительности для C# и C++.
Member
Статус: Не в сети Регистрация: 23.12.2004 Откуда: Киев
Tiberrg Я немного не понял, как ты считаешь число всех возможных вариантов. Если я правильно помню, я подходил к вопросу так: Пусть К - всего карт в колоде (52 вроде). У нас 2 карты и в банке 3. Неизвестные 2 карты у противника и еще 2 будут в банке. Таким образом всего осталось неизвестных 4 карты. Тогда, чтобы проверить все варианты, достаточно в неизвестные карты подставить поочередно все оставшиеся, то есть те, которые не у нас и не в банке; а затем для каждого из раскладов посчитать у кого карты сильнее: у нас или у противника. Отношение числа выигрышных вариантов к суммарному их числу и будет вероятность победы. Суммарное число вариантов и попарных сравнений равно: N = ((K - 5))*((K - 5) - 1)*((K - 5) - 2)*((K - 5) - 3) (К - 5) берется, потому что 5 карт уже известны. Таким образом при К = 52, N = 4280760 - число комбинаций и проверок. Так я рассуждал.
Так как мой метод простой, то вполне возможны ситуации, когда есть более элегантное и эффективное решение. Кроме того, для написания логики работы я использовал скриптовый язык, используемый для робота. Очевидно, что вряд ли там есть серьезные оптимизаторские решения. Так что разница во времени расчета объяснима и предсказуема. В целом у меня и не было задачи сделать ее скоростной - достаточно было приемлимого быстродействия на моем ПК. Буду рад, если моя информация оказалась полезной.
Member
Статус: Не в сети Регистрация: 03.06.2008 Откуда: Rep. of Ireland Фото: 8
Intel Atom N270 1.6Ghz x32 Win 7 Holdem benchmark = 467 400 marks
ПС: Первый раз когда запустил бенч, он выдал ошибку, почему-то.
_________________ ЖК трое суток с целью обучения хорошим манерам (ибо просил не называть меня на "ты") (c) exodi В обращении ко мне используйте Сэр. (с) Я
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения