Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Высота бинарного дерева поиска https://www.cyberforum.ru/ cpp/ thread415798.html
Что неправильно в программе? Полное условие #include <iostream> #include <cstdio> #pragma comment (linker, "/stack:250000000") using namespace std;
метод группового учета аргументов C++
никак не могу разобраться хотел бы применить этот метод для прогнозирования сигналов которые состоят из координат времени и значения функции. кто реализовывал уже такое..? Добавлено через 2 часа...
Covert chanell/DNS C++
Помогите!прогу делать на сях, ось Линух задание - через DNS передача скрытых пакетов по каналу Covert Chanell. Проверять работу надо прогой WiresShark - тестировать будет на ней,пакеты должны быть...
C++ Что хотел сказать автор? Код C++ #define MAX_SIZE (8192) signed char buf; почему нельзя записать: signed char buf; точнее, чем они могут различаться? MAX_SIZE используется только в одном месте, больше в коде... https://www.cyberforum.ru/ cpp/ thread412480.html
C++ Моделирование страничной виртуальной памяти и алгоритмов свопинга https://www.cyberforum.ru/ cpp/ thread412017.html
Господа, в общем есть задание Написать программу, реализующую, согласно варианту (табл. 2), один из алгоритмов выгрузки страниц. В программе должны присутствовать два глобальных массива, один из...
Системный таймер C++
Нужно измерить время между пакетами, которые передаются по rs-232!!! Нужно использовать системный таймер и конкретно буфер OL!!! если есть разбирающиеся люди - отпишитесь пожалуйста!!!
Оператор присваивания в условии C++
Есть конструкция вида: class AC_Node; class Vector; Vector *pQueue = someValue; AC_Node* r = 0; while (r = (AC_Node*)pQueue->Dequeue()) { ....
C++ Нарушение прав доступа при записи значения в выделенную память суть такая,есть игра ,игру запустил,запустил артмани,нашел адрес и значение которое в нем хранится. и тут на те нарушение прав доступа при записи,я бы понял это если бы память была не выделена,но... https://www.cyberforum.ru/ cpp/ thread405804.html
C++ long > short ? https://www.cyberforum.ru/ cpp/ thread404045.html
Правда ли что long строго больше чем short ? Или существуют платформы и/или реализации, где long = short?
C++ Библиотека метапрограммирования Увлекшись метапрограммированием, начатым в предыдущей теме, я решил написать небольшую библиотеку метафункций. Изначально всё это предназначалось для работы с кортежами, но на самом деле оно... https://www.cyberforum.ru/ cpp/ thread403613.html
Эксперт С++
1062 / 841 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
27.12.2011, 21:56  [ТС] 0

Непонятная разница в производительности

27.12.2011, 21:56. Просмотров 12191. Ответов 18
Метки (Все метки)

Ответ

Цитата Сообщение от niXman Посмотреть сообщение
ValeryLaptev, теперь еще расскажи, что нужно сделать чтоб это дело скомпилить и выполнить?
Вот тебе постановка...
В лаборатории математического моделирования Астраханского государственного университета давно и успешно занимаются исследованиями влияния беспорядка на фи-зические свойства частично неупорядоченных конденсированных сред. С использова-нием методов теории перколяции изучены системы неупорядоченных, частично и пол-ностью упорядоченных линейных k-меров на квадратной решетке, в частности получе-ны зависимости порога перколяции и порога джамминга от степени упорядочения k-меров на решетке.

Для моделирования системы линейных k-меров на квадратной решетке была реали-зована программа на языке программирования С. Для сбора статистических данных и расчета разнообразных средних требуется выполнять программу примерно 1000 раз для одного набора исходных данных, поэтому время выполнения одного прогона весьма критично. Однако при всей своей полезности программа оказалась недостаточно эф-фективна по времени выполнения для решеток большого размера и длинных k-меров. Поэтому возникла потребность в более эффективной реализации.

Содержательная по-становка задачи для программирования состоит в следующем.

Имеется дискретная квадратная решетка с линейным размером L узлов, L > 1000. На решетке случайным образом по горизонтали или вертикали размещаются линейные объекты размером k узлов – k-меры, k ≈ L/100. Относительная доля горизонтальных и вертикальных k-меров задается параметром S (степень анизотропии):
S = (ng – nv)/(ng + nv),
где ng — количество горизонтальных k-меров, nv — количество вертикальных k-меров.
При |S| = 1 все k-меры размещаются либо по горизонтали, либо по вертикали. Если |S| ≠ 1, то одно из направлений по соглашению считается доминирующим. Условимся, что при S < 1 доминирующей является горизонтальная ориентация k-меров, соответст-венно при S > 1 доминирует вертикальное направление. Степень анизотропии S = 0 соответствует изотропному заполнению решетки — оба направления равновероятны.

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

Таким образом, основная часть алгоритма — цикл размещения k-меров на решетке. На каждом шаге цикла с помощью датчика случайных чисел генерируются текущая ориентация k-мера и координаты узла решетки, используемые для размещения. Эти ко-ординаты могут интерпретироваться двумя способами:
• текущий узел считается начальным или конечным узлом k-мера;
• текущий узел считается внутренним узлом k-мера.

Отметим, что димеры (k = 2) не имеют внутренних узлов, поэтому для общности выби-рается первый вариант интерпретации координат. В существующей версии программы текущий узел считается начальным узлом: при горизонтальной ориентации k-меров размещается вправо, при вертикальной ориентации — вниз (начало отсчета — в левом верхнем углу решетки, узел с координатами (0,0)). При размещении используются пе-риодические граничные условия, то есть k-меры могут пересекать границы решетки. При программировании это означает, что вычисления координат выполняются по мо-дулю L.

Схема алгоритма в существующей С-реализации выглядит так:
Пока возможно размещение в доминантной ориентации
Генерировать текущую ориентацию
Если возможно размещение в текущей ориентации
Генерировать координаты узла
Пока НЕ возможно разместить к_мер в текущей ориентации
Генерировать координаты узла
Конец_цикла
Разместить к_мер
Увеличить счетчики
Конец_если
Конец_цикла
В данной версии программы решетка преобразована в граф, каждая вершина которого имеет 4 соседей: левый, верхний, правый, нижний.
Заполнение решетки выполняется сразу на графе.
Надо выяснить, при каком S появляется опоясывающий кластер. То есть компонента связности, вершины которой присутствуют в каждой строке-столбце или в обоих направлениях.

Чтобы это работало, надо написать прогу которая считает некую конфигурацию занятых узлов из текстового файла (берем размер, например, 10*10. И по ней - отлаживать.
А для больших L = 1000-30000 надо заполнять в соответствии с алгоритмом.
Тут еще и датчик случайных чисел используется - Вихрь Мерсенна.

Поэтому создание минимального примера после того, как проблема решена - не вижу смысла.
А если интересны задачи по перколяции - aspu.ru и там найти ссылку на Лабораторию математического моделирования. Тарасевич Юрий Юрьевич руководитель.

Вернуться к обсуждению:
Непонятная разница в производительности
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2011, 21:56
Готовые ответы и решения:

Непонятная потеря производительности с вещественными числами
Я написал приложение в с++ builder 2010 для сравнения скорости расчета полинома при разных...

Потоки. Малая разница в производительности
Здравствуйте, продолжаю дальше разбираться с потоками. Имеется класс потока: #include...

Разница в производительности процессоров
Есть 2 компьютера с WindowsXP(32). На одном стоит AMD FX-8320, на другом что-то вроде Intel...

Разница в тестах производительности
Ребята, в этой теме я почти новичек), вопрос: ssd team 480 l5 lite c клонированной не него...

18
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.