Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что на вскидку эффективнее? / 6 сообщений из 6, страница 1 из 1
22.02.2011, 10:13
    #37129811
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что на вскидку эффективнее?
а) 2 000 операций перераспределения памяти + 2 000 операций копирования памяти общим объемом 1 Мб (т.е. прибавления к строке подстрок из другой строки)

или же

б) 1000 (или даже существенно меньше) операций реаллокации + 1000 операций копирования, но общим объемом 15 Мб (т.е. вырезание из одной и той же строки ненужных подстрок) ("существенно меньше" - это если менеджер памяти производит реалокации не при каждом уменьшении длины строки)

?
...
Рейтинг: 0 / 0
22.02.2011, 10:30
    #37129861
Автор:
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что на вскидку эффективнее?
Ничего не понял. Вроде по отдельности слова понятные, а вместе какая-то каша.
Без [псевдо]кода не разберусь.
Но больше всего не понял - неужели так сложно запрограммировать оба варианта и проверить, если зудит? clock() из time.h и GetTickCount() из winapi в помощь
...
Рейтинг: 0 / 0
22.02.2011, 10:55
    #37129939
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что на вскидку эффективнее?
Проверил
На $php

Оказалось, что вариант б) процентов на 20 быстрее. Т.е. при равномерном распределении не нужных кусков в строке, эффективнее вырезать из большой строки ненужные куски функцией $s1 = substr_replace($s1, '', pos, size) (с вытекающим из этого на порядок бОльшим объемом копирования памяти - первый раз так вообще почти вся строка мувается, вырезая небольшой кусочек где-то в начале, потом меньше, меньше и т.д.) чем складывать при помощи $s2 .= substr($s1, pos, size) нужные куски в другую строку.
...
Рейтинг: 0 / 0
22.02.2011, 11:03
    #37129955
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что на вскидку эффективнее?
Edd.DragonПроверил
На $php

Оказалось, что вариант б) процентов на 20 быстрее. Т.е. при равномерном распределении не нужных кусков в строке, эффективнее вырезать из большой строки ненужные куски функцией $s1 = substr_replace($s1, '', pos, size) (с вытекающим из этого на порядок бОльшим объемом копирования памяти - первый раз так вообще почти вся строка мувается, вырезая небольшой кусочек где-то в начале, потом меньше, меньше и т.д.) чем складывать при помощи $s2 .= substr($s1, pos, size) нужные куски в другую строку.

Ура, первый раз в жизни увидел ПХП-ника задумывающегося об эффективности кода. А то мне все рассказывают, что ихнее время дороже компьютерного.
...
Рейтинг: 0 / 0
22.02.2011, 16:03
    #37130803
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что на вскидку эффективнее?
ZyK_BotaNУра, первый раз в жизни увидел ПХП-ника задумывающегося об эффективности кода. А то мне все рассказывают, что ихнее время дороже компьютерного.
Так я и не php-шник (в смысле разработчика web- и db- интерфейсов на клевых фреймворках). На c++ и Дельфи вырос, а временами реализую нетипичные для php и js задачи. Ибо вот те php-шники, которые имелись ввиду в рассказах, как раз и не берутся. А мне, чем заковыристее и нетипичнее, тем интереснее. Монотонно собирать интернет-магазины и визитки на готовых движках - не мое.
...
Рейтинг: 0 / 0
24.02.2011, 17:16
    #37134185
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что на вскидку эффективнее?
Менеджер памяти нормально вообще не очень склонен производить реаллокацию при уменьшении длины строки. Но совершенно очевидно, что быстрее будет пробежать по 15Мб, перетаскивая нужные части "к началу", а потом один раз уменьшить длину.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что на вскидку эффективнее? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]