|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
dGrichineНо возникает ряд вопросов с резервированием памяти для возврата результата из функции DLL. Эти вопросы решаются путем дополнительных вызовов функций DLL, которых хотелось бы избежать. (Других путей не нашел, а они есть? :) ) Через PBNI можно в один вызов, но ИМХО будет медленнее чем 2 external (не проверял). Вот я и задумался о том, что мне немного не хватает вызовов просто одиночных функций, хотелось бы чтобы можно было: 1. создать объект 2. зарядить переменные 3. вызвать обработку, или несколько обработок 4. забрать значение переменных (результат) 5. корректно разрушить объект и освободить память Дальше думаю поковыряться с классами и методами в с++, может быть это поможет избежать дублирования вызовов функций. Я вот так делаю: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Второй вариант позволяет применять виртуальные методы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2007, 14:14 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Забыл про то, что при использовании .DEF для экспорта ф-й, __declspec(dllexport) не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2007, 14:35 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky ... Анатолий, пара вопросов: 1. Деструктора класса не вижу, как разрушаете объект? 2. Второй метод можно поместить вне класса? 3. Еще, не пробовал, но если определять несколько классов, то каким образом вызывать методы? с помощью второго метода, получится? P.S. Сорри, за ламерские вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2007, 16:54 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
dGrichineАнатолий, пара вопросов: Не сходится с нижеследующим :) 1. Деструктора класса не вижу, как разрушаете объект? 2. Второй метод можно поместить вне класса? 3. Еще, не пробовал, но если определять несколько классов, то каким образом вызывать методы? с помощью второго метода, получится? 1) Аналогично: Код: plaintext 1. 2. 3. 4. 5. 6.
2) Да 3) Т.к. в DLL одно общее пространство имен, то придется вводить префиксы в именах экспортируемых ф-й Это удобнее делать в .DEF переименованием символов чтобы не загромождать исходник С++ ненужными техническими деталями: Код: plaintext 1. 2. 3. 4. 5.
PS. Кстати насчет ненужности DLLEXPORT я погорячился. Почему то не всегда без него символ для .DEF определяется (VC6). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2007, 17:49 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky... Я вот так делаю: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Второй вариант позволяет применять виртуальные методы. Попытался повторить, не получилось. А как это все работает на стороне РВ? Например, что на выходе функции "makeInstance" и как это принять в РВ? Почему у функции "method1" два аргумента? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2018, 05:23 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
AISПопытался повторить, не получилось. А как это все работает на стороне РВ? Например, что на выходе функции "makeInstance" и как это принять в РВ? Почему у функции "method1" два аргумента? Код: sql 1. 2. 3. 4.
У method1 в ПБ два аргумента потому что в С++ у методов (кроме статических) есть один дополнительный неявный аркумент - адрес экземпляра класса (это то что возвращает makeInstance) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2018, 19:39 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky , спасибо, что пояснили. Хотя все равно не до конца понял, почему в РВ декларируется функция с двумя параметрами, Код: sql 1.
когда в С у неё только один. Код: plaintext 1. 2. 3. 4.
По method2 вопросов нет, но то таке, все равно это надо будет взять на вооружение. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2018, 12:36 |
|
С++ Class Builder, Увеличение производительности строковых функций
|
|||
---|---|---|---|
#18+
AIS, авторпотому что в С++ у методов (кроме статических) есть один дополнительный неявный аргумент ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2018, 18:53 |
|
|
start [/forum/topic.php?fid=15&gotonew=1&tid=1335133]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 241ms |
total: | 402ms |
0 / 0 |