Estoy llamando a algunas funciones varias veces (5000-10000) y midiendo el tiempo que lleva finalizar la ejecución de la función cada vez.

Por ejemplo: Búsqueda binaria con 10 ints, 11 ints, 1000 ints ... Ahora quiero dibujar la gráfica de cuánto se tarda en terminar la búsqueda, cada paso.

Tengo la cantidad de números enteros como X y el tiempo como Y. Pero no sé cómo conectar los puntos para hacer un gráfico. ¿Existe alguna función o biblioteca en Visual Studio 2015 que me ayude a dibujar un gráfico? como "graphics.h" en borland

Editar: uso de Windows 10 y Visual Studio 2015

-5
M4HdYaR 12 nov. 2017 a las 19:09

2 respuestas

La mejor respuesta

El estándar C ++ 11 o C ++ 14 no tiene ninguna biblioteca de gráficos.

Pero debería considerar el uso de Qt, una biblioteca de GUI multiplataforma de software gratuito para C ++. Supongo que estará feliz de usar el marco de vista de gráficos Qt. También puede considerar algún otro conjunto de herramientas de widgets, quizás específico del sistema operativo. O simplemente genere gráficos 2D usando libcairo.

Otra posibilidad podría ser generar algún archivo textual (para GNUplot, en JSON, en SVG, para algunas hojas de cálculo en CSV, etc ...) y use algún programa externo para mostrar ese gráfico (en formato textual). Incluso podría utilizar alguna comunicación entre procesos (por ejemplo, alguna FIFO o canalización, con _popen o better) entre ellos.

Por cierto, Windows es AFAIK no es un sistema operativo en tiempo real, pero realmente no necesita tiempo real como comentó, solo necesita algo de interactividad. En mi humilde opinión, la canalización a GNUplot es muy fácil (al menos en Linux, y probablemente también en Windows ...).

1
Basile Starynkevitch 22 nov. 2017 a las 11:42

Usé "windows.h" como veo en Este enlace Para dibujar una línea Luego, obtenga el tiempo ejecutado desde la función de búsqueda y la línea dibujada

No está dibujando exactamente en la consola, está dibujando en la pantalla. sin embargo, hizo el trabajo.

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);
}
-1
M4HdYaR 22 nov. 2017 a las 11:17