T
hallo,
ich habe gerade das problem das ich eine dll einbinden möchte und irgendwie nicht weiß ob das wirklich funktioniert. ich habe eine funktionierende dll erstellt und auch schon mittels c# getestet. jetzt möchte ich rein aus performancegründen sehen ob es einen geschwindigkeitsunterschied gibt wenn ich die dll in c# oder c++ anspreche. dafür habe ich zwei for schleifen verschachtelt die sinus rechnen. es handelt sich dabei um 10000 bzw 100000 schleifendurchgänge. c# benöntig dafür über 1min und 36s. bei c++ dauert es immer um die 10 sec egal welche schleifenwerte ich eingebe, daher mein misstrauen.
hier der code der c++ dll:
bool sinus()
{
double i = 1;
double j = 1;
for (i=1; i < 10000; i++)
{
for (j=1; j < 100000; j++)
{
sin(i * j);
}
}
return(true);
}
hier der code des main programms:
// DLLCppTest.cpp: Hauptprojektdatei.
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <iostream>
#include "conio.h"
#include "Windows.h"
#include <winuser.h>
#pragma comment(lib,"testDLL.lib")
extern "C" __declspec(dllimport) bool sinus();
using namespace System;
int main(array<System::String ^> ^args)
{
//Variablen
LONGLONG g_Frequency, g_CurentCount, g_LastCount;
//Frequenz holen
if (!QueryPerformanceFrequency((LARGE_INTEGER*)&g_Frequency))
std::cout << "Performance Counter nicht vorhanden" << std::endl;
//Startzeit
QueryPerformanceCounter((LARGE_INTEGER*)&g_CurentCount);
//Sleep(10); // Sleep ist ungenau, darum wird nicht 10ms herauskommen
//Kontrolle ob die DLL Übergabe erfolgreich war
if(sinus()==true)
{
//Sleep(10000);
//Endzeit
QueryPerformanceCounter((LARGE_INTEGER*)&g_LastCount);
double dTimeDiff = (((double)(g_LastCount-g_CurentCount))/((double)g_Frequency));
std::cout << "Zeit: " << dTimeDiff << std::endl;
}
_getch();
return 0;
}
woran kann es liegen?? wird die lib datei wo fix gespeichert womit sich dann der schleifenwert nicht ändert??? habe immer im debug ordner die lib und dll datei mit der "neuen" ersetzt, weil bei 10000 und 10000 schleifenwerte passt es zusammen ??
danke für die hilfe,
torti