Tests de rapidite 2 (win32)

Description

Suite du test de Anacr0x, mode graphique.
Je laisse sprintf qui est assurement trop lent.
Vous devriez trouver resultats egaux pour fichiers.
Tester plusieurs fois de suite pour faire une moyenne.
L'exe n'a aucune dependance sur msvcrt.dll, ceci expliquant cela.

Source / Exemple :


#include <windows.h>
#include "resource.h"
#include <stdio.h>
#include "bnPrecis.h"

#define SIZEBUFF 8192

int i;
HWND hres[2];
char szbuff[SIZEBUFF];
char szFL1[] = "fopen.txt";
char szFL2[] = "win32.txt";
char szERROR[] = "ERREUR";

void TesteFichiers()
{
  FILE *ouvre;
  HANDLE hfl;
  DWORD r;
  bnTicksStart();
  ouvre = fopen(szFL1, "w");
  if(ouvre == NULL) goto errFopen;
  for(i = 0; i < 6000; i++)
    r = fwrite(szbuff, SIZEBUFF, 1, ouvre);
  fclose(ouvre);
  _ui64toa(bnTicksResult(), szbuff, 10);
  SetWindowText(hres[0], szbuff);
  DeleteFile(szFL1);
  goto testWin32;
errFopen:
  SetWindowText(hres[0], szERROR);
testWin32:
  bnTicksStart();
  hfl = CreateFile(szFL2,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN,0);
  if(hfl == INVALID_HANDLE_VALUE) goto errWin32;
  for(i = 0; i < 6000; i++)
    WriteFile(hfl, szbuff, SIZEBUFF, &r, 0 );
  CloseHandle(hfl);
  _ui64toa(bnTicksResult(), szbuff, 10);
  DeleteFile(szFL2);
  goto dispWin32;
errWin32:
  strcpy(szbuff, szERROR);
dispWin32:
  SetWindowText(hres[1], szbuff);
}

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  switch(mssg) {
    case WM_INITDIALOG:
      SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
      hres[0] = GetDlgItem(hdlg, ID_RES0);
      hres[1] = GetDlgItem(hdlg, ID_RES1);
      return 1;
    case WM_COMMAND:
      switch(wParam) {
        case IDBT_1:
          SetWindowText(hres[0], 0);
          SetWindowText(hres[1], 0);
          TesteFichiers();
          return 0;
        case IDCANCEL: EndDialog(hdlg, 0);
      }
  }
  return 0;
}

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, PSTR, int)
{
  DialogBoxParam(hinst, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0);
  return 0;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.