
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.02.2011, 10:13
|
|||
|---|---|---|---|
|
|||
Что на вскидку эффективнее? |
|||
|
#18+
а) 2 000 операций перераспределения памяти + 2 000 операций копирования памяти общим объемом 1 Мб (т.е. прибавления к строке подстрок из другой строки) или же б) 1000 (или даже существенно меньше) операций реаллокации + 1000 операций копирования, но общим объемом 15 Мб (т.е. вырезание из одной и той же строки ненужных подстрок) ("существенно меньше" - это если менеджер памяти производит реалокации не при каждом уменьшении длины строки) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.02.2011, 10:30
|
|||
|---|---|---|---|
|
|||
Что на вскидку эффективнее? |
|||
|
#18+
Ничего не понял. Вроде по отдельности слова понятные, а вместе какая-то каша. Без [псевдо]кода не разберусь. Но больше всего не понял - неужели так сложно запрограммировать оба варианта и проверить, если зудит? clock() из time.h и GetTickCount() из winapi в помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.02.2011, 10:55
|
|||
|---|---|---|---|
|
|||
Что на вскидку эффективнее? |
|||
|
#18+
Проверил На $php Оказалось, что вариант б) процентов на 20 быстрее. Т.е. при равномерном распределении не нужных кусков в строке, эффективнее вырезать из большой строки ненужные куски функцией $s1 = substr_replace($s1, '', pos, size) (с вытекающим из этого на порядок бОльшим объемом копирования памяти - первый раз так вообще почти вся строка мувается, вырезая небольшой кусочек где-то в начале, потом меньше, меньше и т.д.) чем складывать при помощи $s2 .= substr($s1, pos, size) нужные куски в другую строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.02.2011, 11:03
|
|||
|---|---|---|---|
Что на вскидку эффективнее? |
|||
|
#18+
Edd.DragonПроверил На $php Оказалось, что вариант б) процентов на 20 быстрее. Т.е. при равномерном распределении не нужных кусков в строке, эффективнее вырезать из большой строки ненужные куски функцией $s1 = substr_replace($s1, '', pos, size) (с вытекающим из этого на порядок бОльшим объемом копирования памяти - первый раз так вообще почти вся строка мувается, вырезая небольшой кусочек где-то в начале, потом меньше, меньше и т.д.) чем складывать при помощи $s2 .= substr($s1, pos, size) нужные куски в другую строку. Ура, первый раз в жизни увидел ПХП-ника задумывающегося об эффективности кода. А то мне все рассказывают, что ихнее время дороже компьютерного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.02.2011, 16:03
|
|||
|---|---|---|---|
|
|||
Что на вскидку эффективнее? |
|||
|
#18+
ZyK_BotaNУра, первый раз в жизни увидел ПХП-ника задумывающегося об эффективности кода. А то мне все рассказывают, что ихнее время дороже компьютерного. Так я и не php-шник (в смысле разработчика web- и db- интерфейсов на клевых фреймворках). На c++ и Дельфи вырос, а временами реализую нетипичные для php и js задачи. Ибо вот те php-шники, которые имелись ввиду в рассказах, как раз и не берутся. А мне, чем заковыристее и нетипичнее, тем интереснее. Монотонно собирать интернет-магазины и визитки на готовых движках - не мое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.02.2011, 17:16
|
|||
|---|---|---|---|
Что на вскидку эффективнее? |
|||
|
#18+
Менеджер памяти нормально вообще не очень склонен производить реаллокацию при уменьшении длины строки. Но совершенно очевидно, что быстрее будет пробежать по 15Мб, перетаскивая нужные части "к началу", а потом один раз уменьшить длину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1343119]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 457ms |

| 0 / 0 |
