Russian Qt Forum
Сентябрь 30, 2024, 22:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 6 7 [8] 9 10 11   Вниз
  Печать  
Автор Тема: string и startsWith  (Прочитано 60665 раз)
thechicho
Гость
« Ответ #105 : Май 29, 2013, 15:47 »

//Если нет - говорить о том чья реализация лучше - бессмысленно
как раз была конкретика. скорость выполнения. Igors заявил, что использование qt вредно, потому что такой код можно переписать (оптимизировать) для работы в 20 раз быстрее. потом он уже приплел то, что придется тащить зависимость (библиотеки qt) Улыбающийся и, наверное, имеется еще несколько банальных примеров на готове.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #106 : Май 29, 2013, 16:03 »

Есть мнение, что операции QString'а написаны оптимальнее, чем вы или я можете реализовать в своём велосипеде.
Пример
Цитата: cpp
str.replace("a", "b");
Изначально "а" и "b" - строки в сегменте данных, т.е. расход нулевой. Но по правилам языка срабатывают конструкторы QString - вот уже 2 malloc полетело. Ининциализация начинки QString - ну там быстро, но ведь надо зарядить содержимое, вот еще 2 malloc + перегнать в юникод. Т.е. еше до реализации, сам вызов уже довольно затратен.

Вам нужно расширять свой кругозор, когда ничего не знаешь, так и взять негде.
А может не стоит так резво судить, тем более ничего не зная о круге решаемых задач?  Улыбающийся
Хотите дам задачку из моих, обещаю что никаких специальных знаний в предметной области не потребуется. И посмотрим как Вам помогут знания буста и др.  (отмажется, начнет заливать про байт-код и.т.п  Улыбающийся)
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #107 : Май 29, 2013, 16:50 »

А может не стоит так резво судить, тем более ничего не зная о круге решаемых задач?  Улыбающийся
// Щеки сейчас лопнут.  Смеющийся
А причем здесь круг решаемых задач?

Хотите дам задачку из моих, обещаю что никаких специальных знаний в предметной области не потребуется. И посмотрим как Вам помогут знания буста и др.  (отмажется, начнет заливать про байт-код и.т.п  Улыбающийся)
// Ба бах, щеки лопнули.  Смеющийся
Да, задачки давать вы мастер, вы бы научились их решать. Подмигивающий
Записан
thechicho
Гость
« Ответ #108 : Май 29, 2013, 16:59 »

//str.replace("a", "b");
//Т.е. еше до реализации, сам вызов уже довольно затратен.
интересно, когда компьютеры станут в 100500 раз мощнее и производительнее, вы будете делать такие же выводы.
интересно, наши потомки поймут, что вы имели в виду, когда программирование будет сводиться к использованию готовых элементов и все будет прекрасно и быстро работать.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #109 : Май 29, 2013, 17:01 »

// Ба бах, щеки лопнули.  Смеющийся
Да, задачки давать вы мастер, вы бы научились их решать. Подмигивающий
Да уж у кого лопнули - устроили кипеж по поводу 15 строк кода  Улыбающийся Ладно, посмотрим на Ваше умение (щас только нарисую пару зайчиков и запостю)
Записан
_OLEGator_
Гость
« Ответ #110 : Май 29, 2013, 18:39 »

Изначально "а" и "b" - строки в сегменте данных, т.е. расход нулевой. Но по правилам языка срабатывают конструкторы QString - вот уже 2 malloc полетело. Ининциализация начинки QString - ну там быстро, но ведь надо зарядить содержимое, вот еще 2 malloc + перегнать в юникод. Т.е. еше до реализации, сам вызов уже довольно затратен.
Все еще хуже. Это из разряда людей, которые даже умножение и деление на 2 оптимизируют байтовым сдвигом.
Главное правило оптимизации - ее надо делать там, где она действительно необходима. Нормальный заказчик не будет платить за бесполезную и трудозатратную оптимизацию, вообще сейчас дешевле и проще купить комп помощнее, чем держать и тратить деньги на таких фанатиков-оптимизаторов.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #111 : Май 29, 2013, 19:03 »

Все еще хуже. Это из разряда людей, которые даже умножение и деление на 2 оптимизируют байтовым сдвигом. Главное правило оптимизации - ее надо делать там, где она действительно необходима. Нормальный заказчик не будет платить за бесполезную и трудозатратную оптимизацию, вообще сейчас дешевле и проще купить комп помощнее, чем держать и тратить деньги на таких фанатиков-оптимизаторов.
А разве я говорил что QString - "плохой" класс, позорно медленный, как-то призывал отказаться от его использования? Та где ж это было такое? Улыбающийся Просто я заметил что скоростью он явно не блещет, что вполне норм, за удобства надо платить.

.. и проще купить комп помощнее
Впервые я услышал это от clipper'овских девочек в конце 80-х, и с той поры все то же. Жизнь показала что если ресурсы бездарно разбазариваются - мощность компа не спасает.
Записан
thechicho
Гость
« Ответ #112 : Май 29, 2013, 19:24 »

//А разве я говорил что QString - "плохой" класс, позорно медленный, как-то призывал отказаться от его использования? Та где ж это было такое? Улыбающийся

Ну Вы же сами понимаете - это халтура. Давайте перельем строку из одного представления в другое, где есть удобные утилиты, а потом обратно. Да, делов неск секунд, но ведь платим оптимальностью. Вот кто-то ускорит Ваш код раз так в 20 и скажет типа "там какой-то лошара писал, с пых-пых наверно". И, поверьте, будет неприятно.
Записан
Syveren
Гость
« Ответ #113 : Май 29, 2013, 19:57 »

Оптимизировать надо в меру! От излиших оптимизаций код пухнет, его сложнее поддерживать... Особенно,если где-то там скрылась ошибка, приходится копаться, выясняя, чтоже на самом деле имел вииду автор  Плачущий
« Последнее редактирование: Май 29, 2013, 22:34 от Syveren » Записан
_OLEGator_
Гость
« Ответ #114 : Май 29, 2013, 20:08 »

.. и проще купить комп помощнее
Впервые я услышал это от clipper'овских девочек в конце 80-х, и с той поры все то же. Жизнь показала что если ресурсы бездарно разбазариваются - мощность компа не спасает.

Очередное передергивание и вырывание слов из контекста. Это фраза относилась к фанатичной и бесполезной оптимизации. Потратив сегодня месяц на то, чтобы программа считала на 5 секунд быстрее, завтра ваш продукт начнет устаревать, а после завтра не будет нужен никому. Сейчас ценнее время и скорость разработки, простота поддержки и читаемость кода.
Вы пытаетесь усидеть на двух стульях, одновременно клеймя готовые решения за то, что они якобы ведут к отуплению и зависимости, но в тоже время открещиваетесь от велосипедов. Уж определитесь на какой вы стороне.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #115 : Май 29, 2013, 20:28 »

Очередное передергивание и вырывание слов из контекста. Это фраза относилась к фанатичной и бесполезной оптимизации.
Да в данном случае никто не думает ни про какую оптимизацию, это попытка "высосать из пальца" хоть какие то основания для целесообразности своего велика. Если вернуться к еще одной эпохальной теме про итераторы, то там Igors убеждал, что такая оптимизация совершенно не нужна. Улыбающийся
Это для него абсолютно нормально.
Записан
Spark
Гость
« Ответ #116 : Май 29, 2013, 20:28 »

Что бы как нибудь разрядить обстановку или подлить масла в огонь (я уж и не знаю).
Посоветуйте как в строковой переменной удалить справа все символы начиная с первого попавшегося пробела?
Записан
thechicho
Гость
« Ответ #117 : Май 29, 2013, 21:00 »

Spark, вы уже решили на чьей вы стороне? Смеющийся
если на стороне зла, то можете так Улыбающийся
Код:
str.replace(QRegExp("\\s.+$"), "");
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #118 : Май 29, 2013, 22:00 »

\s — это любой пустой символ, а не только пробел

решение без регулярок тоже простое:
Код
C++ (Qt)
int spacePos = s.indexOf(" ");
if (spacePos != -1)
{
   s = s.left(spacePos);
   // или
   s.replace(spacePos, s.length() - spacePos, QString());
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Spark
Гость
« Ответ #119 : Май 30, 2013, 03:23 »

Spark, вы уже решили на чьей вы стороне? Смеющийся
если на стороне зла, то можете так Улыбающийся
Код:
str.replace(QRegExp("\\s.+$"), "");
Спасибо. Регулярки для меня это новое в коде. Их можно использовать так же как и  в текстовых редакторах или свой особый язык?

Философия по поводу добра и зла. Если провести черту там где она проведена в споре, то я на стороне добра и зла. Просто не ясно зачем спор? Ведь ясно, что профи должен хорошо ориентироваться в чужих рецептах и уметь импровизировать.

У меня не может быть абсолютного мнения. Я слишком мало знаю в этой области. Но я привык двигаться от общего к частному. Вроде еще Микелажело, когда его спросили как вы создаете свои шедевры? Ответил - "Очень просто, беру камень и отсекаю все ненужное".
Короче, мне удобно пользоваться готовым решением, не особо вдаваясь в подробности как это устроено. Когда усвою картину в целом, надо переходить на частности. А сейчас глядя на листинг чужой программы, там вижу сплошные классы и функции в которых плохо ориентируюсь. Если еще упростить схему то я вижу много переменных в лице (классов и функций) объединенных логикой. Так вот в логике я более менее ориентируюсь, потому кое, что и получается двигать. А вот с переменными беда. Необходимо время, что бы легко начинать находить где голова, а где хвост Улыбающийся.
Надеюсь ясно пояснил.

P.S. Если же переходить на личности то мне импонирует, что у Igors есть такое качество как упертость (поперечность). Отстаивать свое мнение - вещь сложная. Правда тема для споров вряд ли выбрана удачно. Здесь не может быть правых.
« Последнее редактирование: Май 30, 2013, 08:13 от Spark » Записан
Страниц: 1 ... 6 7 [8] 9 10 11   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 23.