Форум Краматорська

Краматорськ та світ навколо нас => Компьютеры, мобилки, софт, Интернет, провайдеры => Тема розпочата: вор від 29 Березень 2018, 06:35:26

Назва: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 29 Березень 2018, 06:35:26
есть у меня одна программка в исходниках на c++, считает разные цифры и числа..запускал её долго выполняться, жрала немеряно памяти, решил - накормлю до отвала, суку..выставил объём swap 1.6tb..она резко затормозила и стала жрать 243mb virtual ram и 162mb physical ram постоянно, причём числа и цифры теже выдаёт, в теле её они не забиты, а вычисляются в процессе работы..как она решила этот вопрос с памятью - неясно, я подключался к интернету, может на уровне компилятора, может на уровне процессора, может на уровне операционой системы, но решила вопрос своей жадности, видимо через интернет, ибо линукс более дырявый, чем виндовс или такой же просто другой масти..делаю вывод: большие объёмы памяти и нафик не нужны, память и процессорное время взаимозаменяемы..это я узнал еще в 2003-2005 году, когда работал над сжатием данных..билл гейтс был прав 640kb хватит любому достаточно быстрому процессору или кластеру процессоров для любой задачи! а вот объём жёсткого диска желательно иметь как можно больший!
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: _Алекс_ від 29 Березень 2018, 06:58:20
"640KB оперативы хватит с головой!" - воскликнул Билл Гейтс, выпуская очередную версию винды, которая голая "отъедает" более 2ГБ  :o
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 29 Березень 2018, 08:30:00
ну...когда бг занимался этими вопросами, дела обстояли именно так, сейчас он просто фотография в журнале  :o
возможно я слукавил и большие объёмы нужны cad/cam/cae решениям для работы над сложными моделями, процессоры просто не вывезут такой объём вычислений в короткое время..будут сильно греться и много потреблять энергии и из-за этого и растут объёмы ram :o т.е. дешевле перенести в ram, чем прогонять через процессор 3d модель цеха завода, для того чтобы подвинуть, покрутить или масштабировать в реальном времени..такие мысли :? опять же упёрлись в производительность процессоров, они не всесильны :o
вот рекурсивная функция из той программы, что была жадна до памяти, а потом остепенилась, во вложении полный исходник c++
Код: [Select]
/**
 * @brief Move generator performance test function.
 *
 * @param board
 * @param depth
 * @param global_stats statistics
 */
static void count_game(const Board *board, const int depth, GameStatistics *global_stats)
{
GameStatistics stats = GAME_STATISTICS_INIT;
unsigned long long moves;
int x;
Board next[1];

if (depth == 1) {
moves = get_moves(board->player, board->opponent);
stats.n_moves = stats.max_mobility = stats.min_mobility = bit_count(moves);
if (moves == 0) {
if (can_move(board->opponent, board->player)) {
stats.n_passes = 1;
} else {
const int n_player = bit_count(board->player);
const int n_opponent = bit_count(board->opponent);
if (n_player > n_opponent) stats.n_wins = 1;
else if (n_player == n_opponent) stats.n_draws = 1;
else stats.n_losses = 1;
}
}
} else {
moves = get_moves(board->player, board->opponent);
if (moves) {
foreach_bit (x, moves) {
board_next(board, x, next);
count_game(next, depth - 1, &stats);
}
} else {
board_next(board, PASS, next);
if (can_move(next->player, next->opponent)) {
count_game(next, depth - 1, &stats);
}
}
}
game_statistics_cumulate(global_stats, &stats);
}

/**
 * @brief Move generator performance test
 *
 * @param board
 * @param depth
 */
void count_games(const Board *board, const int depth)
{
int i;
unsigned long long t, n;
GameStatistics stats;

board_print(board, BLACK, stdout);
puts("\n  ply           moves        passes          wins         draws        losses    mobility        time   speed");
puts("------------------------------------------------------------------------------------------------------------------");
n = 1;
for (i = 1; i <= depth; ++i) {
stats = GAME_STATISTICS_INIT;
t = -cpu_clock();
count_game(board, i, &stats);
t += cpu_clock();
printf("  %2d, %15llu, %12llu, %12llu, %12llu, %12llu, ", i, stats.n_moves + stats.n_passes, stats.n_passes, stats.n_wins, stats.n_draws, stats.n_losses);
printf("  %2d - %2d, ", stats.min_mobility, stats.max_mobility);
n += stats.n_moves + stats.n_passes;
time_print(t, true, stdout); printf(", ");
print_scientific(n / (0.001 * t + 0.001), "N/s\n", stdout);
if (stats.n_moves + stats.n_passes == 0) break;
}
printf("Total %12llu\n", n);
puts("------------------------------------------------------------------------------------------------------------------");
}
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 29 Березень 2018, 09:25:00
разобрался с программой, ничего там не менялось, просто я запарился..но рассуждения верны, если бы не игры и фильмы, то для вычислительных задач память заменют такты процессора :o
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: LynxAS від 29 Березень 2018, 09:54:35
а вот разрешите не согласиться )
вот имеем к примеру мега-супер-пупер быстрый проц
а памяти ему дали (не считая кэша) - 640 кб
и вот он такой запросил кусок данных для расчета у дисковой подсистемы, подождал, посчитал за аттосекунду, отдал диску, запросил следующий кусок, подождал.
а теперь внимание вопрос - сколько времени будет тратиться на расчет и сколько - на обмен данными?
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 29 Березень 2018, 10:00:44
а вот разрешите не согласиться )
вот имеем к примеру мега-супер-пупер быстрый проц
а памяти ему дали (не считая кэша) - 640 кб
и вот он такой запросил кусок данных для расчета у дисковой подсистемы, подождал, посчитал за аттосекунду, отдал диску, запросил следующий кусок, подождал.
а теперь внимание вопрос - сколько времени будет тратиться на расчет и сколько - на обмен данными?
тут мы приходим к пониманию важности понятия кэша процессора, может нужно всю память перенести в процессор? :D архитектура фон-неймана, машина тьюринга и т.д. и т.п. в конечном итоге любые вычисления это сдвиг туда-сюда :D оптимальная вычислительная функция - синусоида, кто не выпил - ходит по прямой, а кто выпил - по синусоиде, вывод -> чтобы хорошо считать - нужно больше пить  :yahoo:
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 29 Березень 2018, 15:22:34
просто компьютер не только для счёта, отсюда все извращения с ростом объёмов памяти, внешних накопителей, размера экрана и т.д. прогресс короче..а считали бы люди только научные задачи, кто его знает какой бы была архитектура компьютера..но чисто для себя выяснил, что даже выделение памяти под массив можно заменить обработкой каждого элемента последовательно без выделения под весь массив, но тогда нужна быстрая дисковая подсистема и совсем другие алгоритмы обработки данных..домашний компьютер это порождение прогресса, человек настолько развился, что ему дома понадобилось строить города, запускать корабли и прочее, что мы видим в современных играх..а билл гейтс был прав, но не прозорлив..далёкое будущее предвидеть легко, сложнее всего делать прогнозы на недалёкое будущее  :patsak:
LynxAS просто когда билл делал такой прогноз, то в моде были стриммеры, последовательные внешние накопители, и билл думал, что относительно быстрой будет дисковая подсистема(как у стриммера) и мощным процессор, а на память не хватило фантазии подумать, что она будет дешевая, экономичная и быстрая, такова моя версия, а на самом деле это может всего лишь журналистская утка про слова билла :P
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: _Алекс_ від 29 Березень 2018, 17:54:34
проблемы с объемом озушки для меня сейчас наиболее актуальны при программировании ардуины с 2К оперативы (или урезанный вариант - 1К)
тут уже задумываешься о типах переменных ( byte или unsigned int (1 или 2 байта), unsigned long long или unsigned long (8 или 4 байта)) а если безразмерные массивы - то это вообще кошмар
конструкция switch - case или if-ми обойтись (при этом ифами азу меньше съедается)
хранение массивов с константами или текстовые надписи в озу или в PROGMEM

а на компах - в теперешней ситуации - отъедаемый прогой объем памяти особо не важен

моя прога - на VB - форма с несколькими текстбоксами и лэблами, в коде - создается http-запрос через проксю, получается ответ, если пришло то что надо - сохраняется, если нет, то закрываем запрос, ждем, и повторяем
отъедает памяти от 25М до 50М (от чего зависит - не знаю и мне особо не интересно)
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 30 Березень 2018, 00:11:17
проблемы с объемом озушки для меня сейчас наиболее актуальны при программировании ардуины с 2К оперативы (или урезанный вариант - 1К)
тут уже задумываешься о типах переменных ( byte или unsigned int (1 или 2 байта), unsigned long long или unsigned long (8 или 4 байта)) а если безразмерные массивы - то это вообще кошмар
конструкция switch - case или if-ми обойтись (при этом ифами азу меньше съедается)
хранение массивов с константами или текстовые надписи в озу или в PROGMEM

а на компах - в теперешней ситуации - отъедаемый прогой объем памяти особо не важен

моя прога - на VB - форма с несколькими текстбоксами и лэблами, в коде - создается http-запрос через проксю, получается ответ, если пришло то что надо - сохраняется, если нет, то закрываем запрос, ждем, и повторяем
отъедает памяти от 25М до 50М (от чего зависит - не знаю и мне особо не интересно)
arduino не программировал, но программировал atmel на ассемблере; зачем мучать себя и железо высоким уровнем, когда есть низкий..?по vb, у вас какая версия? под виндовс и линуксом юзаю c++ c-style и то потому, что долго начинать ассемблерную оперу и часто cross-platform tools пишу..а так бы тоже пользовал ассемблер, если бы часто программировал..но я пишу одну программу в год, чаще копаюсь в чужих исходниках и дописываю и изменяю их..когда-то учавстовал в неофициальных соревнованиях ассемблерщиков на самую маленькую программу под dos по заданию(http://www.hugi.scene.org/compo/compoold.htm i'm wrestler), занял предпоследнее место, последнее занял малазиец, который сделал программу на vb, а потом переписал на ассемблере.. поэтому я у вас спрашиваю версию vb, так как немного понимаю как устроен windows  :) почему я не билл гейтс до сих пор, потому что: для того, чтобы хорошо жить нужно много работать, чтобы стать богатым нужно придумать что-то другое, так сказал один умный человек :o
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: _Алекс_ від 30 Березень 2018, 07:00:33
 у меня программерство - хобби - программа в 2-5 лет (это при условии что удается побороть лень), так что ассемблер мне не нужен  :?
в настоящее время использую Visual Studio 2015 - в ней VB и С++ (для ардуины-Atmel, ну ARM Stm32/stm8 буду щупать у stm32 аж 20К ОЗУ), ну и по мелочам VBA в excel
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: Mr.Bean від 30 Березень 2018, 08:55:35
а на компах - в теперешней ситуации - отъедаемый прогой объем памяти особо не важен
Похоже, так мыслят все нынешние разработчики ПО :( В первую очередь браузеров...
Назва: Re: ram vs cpu или так ли не прав был билл гейтс!
Відправлено: вор від 01 Квітень 2018, 00:15:15
у меня программерство - хобби - программа в 2-5 лет (это при условии что удается побороть лень), так что ассемблер мне не нужен  :?
смотря куда мигрирует хобби, если потухнет, то не нужен, а если к профессионализму, то без ассемблера не обойтись..