Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2009, 17:27   #1
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию Скорость заполнения памяти разными способами.

Подскажите пожалуйста, каким способом оперативная память будет заполняться быстрее: функцией memset или же циклом с обычным присвоением? И какой по вашему будет выйгрышь в скорости?
Alexcomeback вне форума Ответить с цитированием
Старый 20.05.2009, 18:00   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Наверно memset

Код:
#include <iostream>
#include <gTimer>

#pragma comment(lib,"gEngine/lib/cored.lib")

int main()
{
	gen::core::gTimer timer;

	const int r = 99999999;
	int arr[r];
	timer.start();
	for(int i = 0; i < r; ++i)
		arr[i] = 0;
	std::cout<<timer.getTime() << std::endl;

	timer.start();
	memset(arr,0,sizeof(int)*r);
	std::cout<<timer.getTime() << std::endl;

	system("pause");

	return 0;
}
Результат
Цитата:
1.95556e-006
0.00040061
Press any key to continue . . .
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 20.05.2009, 23:14   #3
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию

я так закодил, разницы не заметил если честно:
Код:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <mem.h>

int main(int argc, char* argv[])
{   FILE* output=fopen("d:\output.csv", "w+") ;

	int *arr ; long *arr2 ; float *arr3 ;
	double *arr4 ; char *arr5 ;
	time_t t,t2 ;
	long j,i ;

	//int
	for ( i = 64; i <= 1024; i*=2) {
	arr=new int[i*262144/sizeof(int)] ;
	t=clock() ;
	memset(arr, 9, i*262144) ;
	t2=clock() ;
	fprintf(output, "Запись int [%ld](сек) ; %1.3f ; \t\t\t\t\t\t",
	i*262144/sizeof(int), (t2-t)/CLOCKS_PER_SEC) ;
	t=clock() ;
	for (long j=0; j < i*262144/sizeof(int) ; ++j) {arr[j]=0 ;}
	t2=clock() ;
	fprintf(output, "Запись циклом int [%ld](сек.) ; %1.3f ; %d мб ; \t\t\t\t\t\t ",
	i*262144/sizeof(int), (t2-t)/CLOCKS_PER_SEC, i) ;
	t=clock() ;
	for (long j=0; j <= i*262144/sizeof(int) ; ++j) {int k=arr[j] ;}
	t2=clock() ;
	fprintf(output, " Чтение int [%ld](%ld байт)(сек.) ; %1.3f \n ",  i*262144/sizeof(int),
	sizeof(int)*i*262144, (t2-t)/CLOCKS_PER_SEC) ;
	delete [] arr ; }
	fprintf(output, "\n") ;
...


	fclose(output) ;
	return 0;
}
Alexcomeback вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли в DBGrid выделять строки разными цветами? KiLLiR Компоненты Delphi 2 08.02.2009 01:00
Создание проги для фильтрации списка слов за разными критериями Makoto-kun Помощь студентам 1 10.01.2009 04:37
Возможно ли через ПХП передавать данные между разными сайтами? tunyash PHP 1 31.07.2008 16:26
Текст в полях таблицы разными цветами в Delphi Гео Помощь студентам 2 13.06.2008 02:10
сколькими способами можно разрезать прямоугольник на n-ное количество частей? 4ingiz Общие вопросы Delphi 2 31.01.2008 06:40