Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Как написать максимально оптимизированную функцию поиска длинны строки? - C++

23.08.2013, 16:59. Просмотров 1082. Ответов 32
Метки нет (Все метки)

Мысль о максимально оптимизированной функции длинны строки, где строка это указатель на литерал типа char.
Не будем использовать не std::string, не std::wstring, не wchar_t
в функцию передается указатель на строку, вот тело:
C++
1
2
3
4
5
6
7
int main()
{
    char * str= "hello world";
    int v = length(str);
    std::cout << v << std::endl;
    std::cin.get();
}
Пожалуйста подскажите ваши варианты...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 16:59     Как написать максимально оптимизированную функцию поиска длинны строки?
Посмотрите здесь:

Написать функцию рекурсивного бинарного поиска - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; void input(int Arr,int r); void output(int Arr,int r); int...

Написать функцию рекурсивного бинарного поиска - C++
Рекурсия. Двоичный поиск. Написать функцию рекурсивного бинарного поиска. Использовать написанную функцию для знаходення...

Как поместить строки разной длинны в двумерный массив? (файловый ввод/вывод) - C++
Всем доброго времени суток! Есть файл с нескольким количеством строк и все эти строки разной длинны, как мне их поместить в двумерный...

Написать generic функцию линейного поиска в массиве - C++
Предложите ваши варианты решения заданий 5. Имеем чистый C. Напишите generic функцию линейного поиска в массиве. И приведите пример...

Написать функцию поиска структуры с заданным значением - C++
Здравствуйте уважаемые программисты. Помогите пожалуйста с программой. Написать функцию поиска структуры с заданным значением выбранного...

Нужно написать своеобразную функцию поиска строк в кавычках - C++
Мне нужна функция которая в текстовом файле примерно со следующим содержанием &quot;string1&quot; sometext &quot;string2&quot; искала строки заключённые в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
za5
440 / 344 / 30
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
23.08.2013, 18:01     Как написать максимально оптимизированную функцию поиска длинны строки? #21
Цитата Сообщение от vbloodv Посмотреть сообщение
int i = 0;
while(s[i] != '\0')
{
++i;
}
а разве так не быстрее будет:
C++
1
(sizeof(*str)-sizeof(char))/sizeof(char)
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
23.08.2013, 18:04     Как написать максимально оптимизированную функцию поиска длинны строки? #22
Цитата Сообщение от vbloodv Посмотреть сообщение
Смысл в том чтобы получить максимально быстрый и код. Интересно, все закончится вставками из ассемблера ))) ?
C++
1
2
3
4
5
6
7
8
9
10
11
#include "iostream"
 
 
int main()
{
    char a[]="hello world";
    std::cout<<sizeof(a);
 
    system ("pause");
    return 0;
}
Если тупанул, не кричать! ))
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 18:09  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #23
Цитата Сообщение от za5 Посмотреть сообщение
а разве так не быстрее будет:
C++
1
(sizeof(*str)-sizeof(char))/sizeof(char)
Не получается взять размер всего слова, к тому же по факту 3 раза сторонняя функция используется которая сама по себе еще не быстрая.

MousePro,тупанул ничего страшного. Это же форум.
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
23.08.2013, 18:10     Как написать максимально оптимизированную функцию поиска длинны строки? #24
ах сек
za5
440 / 344 / 30
Регистрация: 16.10.2010
Сообщений: 842
Записей в блоге: 7
23.08.2013, 18:14     Как написать максимально оптимизированную функцию поиска длинны строки? #25
ну это правда будет с массивом работать: не динамически...
C++
1
2
3
4
5
6
7
8
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std;
    char str[] = "123456789";
    cout << (sizeof(str)/sizeof(char) - 1) << endl;
    cin.get();
    return 0;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
23.08.2013, 18:16     Как написать максимально оптимизированную функцию поиска длинны строки? #26
Цитата Сообщение от za5 Посмотреть сообщение
ну это правда будет с массивом работать:
Это будет вычислено в момент компиляции.
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 18:18  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #27
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Проходов стало меньше, но на 1 проверку больше, и при услоивии что все что в строке входит в диапазоны ASCII, и если в памяти за границами попадётся чтото в этом диапазоне, как поведёт тогда я хз )
C++
1
size_t i = 1, len = 0;
памяти в 2 раза больше под две переменные.
C++
1
len = i * 2;
такое умножение будет быстрее делаться если использовать битовый сдвиг или лучше сложение. Спасибо за size_t забыл про него.
MickeyBlueEyes
Студент
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
23.08.2013, 18:42     Как написать максимально оптимизированную функцию поиска длинны строки? #28
ах не вышло, в памяти за границами попадается всё что угодно и \0 и символы, найти правильно границу не получается. Разве что выделять большой кусок памяти в начале программы, инициализировать все ячейки например - 0. И тогда можно будет складывать и быстрее искать ) а так походу катит только стандартный алгоритм, ну если только ASM или ещё какие то оптимизаторы.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
23.08.2013, 20:46     Как написать максимально оптимизированную функцию поиска длинны строки? #29
Цитата Сообщение от vbloodv Посмотреть сообщение
Не получается взять размер всего слова, к тому же по факту 3 раза сторонняя функция используется которая сама по себе еще не быстрая.

MousePro,тупанул ничего страшного. Это же форум.
sizeof - не функция.
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.08.2013, 21:05     Как написать максимально оптимизированную функцию поиска длинны строки? #30
Цитата Сообщение от vbloodv Посмотреть сообщение
Мысль о максимально оптимизированной функции длинны строки, где строка это указатель на литерал типа char.
в силу поиска первого попавшегося пресловутого символа '\0', никакая максимальная оптимизация не поможет, кроме как тупо пробежаться по всем символам до первого вхождения '\0'

Добавлено через 1 минуту
Цитата Сообщение от Герц Посмотреть сообщение
sizeof - не функция.
более того, sizeof и не поможет здесь. пример

C++
1
2
char s[] = "abc";
s[1] = '\0';
zer0mail
2323 / 1949 / 192
Регистрация: 03.07.2012
Сообщений: 6,996
Записей в блоге: 1
23.08.2013, 22:00     Как написать максимально оптимизированную функцию поиска длинны строки? #31
Можно так:
C++
1
2
3
4
5
6
unsigned int length(char*  str)
{
    char *p;
    for (p=str; *p++;);
    return p-str-1;
}
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
24.08.2013, 12:58  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #32
Цитата Сообщение от zer0mail Посмотреть сообщение
Можно так:
VICTORY
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 16:55     Как написать максимально оптимизированную функцию поиска длинны строки?
Еще ссылки по теме:

Написать функцию поиска структур (записей) с заданными признаками - C++
Написать функцию поиска структур (записей) с заданными признаками (например, выбор структур по заданному диапазону значений элемента). ...

Написать рекурсивную функцию поиска заданного числа Фибоначчи - C++
. Написать рекурсивную функцию поиска заданного числа Фибоначчи.

Написать функцию поиска в одномерном массиве элемента, удовлетворяющего условию - C++
1)Написать функцию поиска в одномерном массиве элемента X, удовлетворяющего условию n&lt;X&lt;m. Значения n и m вводятся с клавиатуры в ...

Написать функцию двоичного поиска в упорядоченном по алфавиту массиве слов - C++
Написать функцию двоичного поиска в упорядоченном по алфавиту массиве слов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.08.2013, 16:55     Как написать максимально оптимизированную функцию поиска длинны строки? #33
vbloodv, на форуме немало аналогов strlen, например
Написать strlen() путем считывания групп из 8ми байтов строки
Напишите свой аналог функций strlen()
Yandex
Объявления
24.08.2013, 16:55     Как написать максимально оптимизированную функцию поиска длинны строки?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru