Рисование графика с использованием времени выполнения функции в с ++

Я вызываю некоторые функции несколько раз (5000-10000) и измеряю время, необходимое для завершения выполнения функции каждый раз.

Например: бинарный поиск с 10, 11, 1000... Теперь я хочу нарисовать график того, сколько нужно, чтобы завершить поиск, каждый шаг.

У меня есть количество целых чисел как X и время как Y. Но я не знаю, как соединить точки для создания графика. Есть ли какая-либо функция или библиотека в Visual Studio 2015, которая помогает мне рисовать график? как "graphics.h" в Borland

Изменить: Использование Windows 10 и Visual Studio 2015

2 ответа

Решение

Стандарт C++11 или C++14 не имеет графической библиотеки.

Но вам стоит подумать об использовании Qt, бесплатной кросс-платформенной библиотеки GUI для C++. Я думаю, что вы будете счастливы в использовании графического представления Qt. Вы также можете рассмотреть некоторые другие, возможно, специфичные для ОС, наборы инструментов для виджетов. Или просто выведите 2D-графику, используя libcairo.

Другой возможностью может быть вывод некоторого текстового файла (для GNUplot, в JSON, в SVG, для некоторой электронной таблицы в CSV и т. Д.) И использование некоторой внешней программы для отображения этого графика (в текстовом формате). Вы даже можете использовать некоторые межпроцессные коммуникации (например, FIFO или конвейер, с _popen или лучше) между ними.

Кстати, Windows - это AFAIK, а не операционная система реального времени, но вам не нужно в реальном времени, как вы прокомментировали, вам просто нужна интерактивность. IMHO конвейерная обработка в GNUplot очень проста (по крайней мере, в Linux, и, вероятно, в Windows тоже....).

Я использовал "windows.h", как я вижу в этой ссылке, чтобы нарисовать линию, затем получить время, выполненное из функции поиска и нарисованной линии.

Это не совсем рисунок в консоли, это рисунок на экране. однако это сделало работу.

for (int i = 10000;i <= 100000;i += 500) {
    logarithm bSearch;
    //Measuring the time of binary search with the array of 'i' e
    searchResult = bSearch.BinarySearch(i);
    j = searchResult.getTime();
    //Here is drawing the line
    BCX_Line(hConWnd, width / 2 + i / 500 - 1 -20, height / 2 - j + 2, width / 2 + i / 500 - 20, height / 2 - (j), Cyan);
}
Другие вопросы по тегам