Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 854

/ вопрос открыт /

Приветствую, уважаемые эксперты!

Есть условие:
Реализовать методы для работы со строками:
1) Копирование части строки заданной длины с заданной позиции;
2) Удаление части строки заданной длины с заданной позиции;
3) Поиск - подстроки в строке

Определить их производительность по отношению к стандартным методам.

Работу над строками я разберусь, проблема будет с оптимизацией немного, а вот как сделать вот это определение их производительности?

Заранее благодарю!

Жикльор Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Жикльор (статус: 5-ый класс)
Вопрос отправлен: 30 декабря 2011, 20:58
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 5 января 2012, 14:56; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 31 декабря 2011, 10:43 [#1]:

Цитата (Жикльор):

а вот как сделать вот это определение их производительности?

Ну, удельную производительность вычислить можно. Оценка, кончно, грубая, но для учебной задачи сойдёт. Короче, надо замерять время отработки стандартных функций, потом - время самодельных; делить первое на второе, умножать на 100. Получатся искомые проценты.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 31 декабря 2011, 10:49 [#2]:

Да, забыл добавить: всех с наступающим, я пью уже. У меня тут абрау-дюрсо брют и шоколадка. Время 10:49. Новый год же!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 1 января 2012, 20:38 [#3]:

А как именно делать вот эти замеры?
На примере с кодом показать, пожалуйста :)

Уже разобрался немного с QueryPerfomanceCounter и QueryPerfomanceFrequency :)

Всех с прошедшим :)
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 2 января 2012, 10:37 [#4]:

Цитата (Жикльор):

Уже разобрался немного с QueryPerfomanceCounter и QueryPerfomanceFrequency :)

Да, да, детка! Йа, йа, фольксваген штангенциркуль! Щас покажу модуль.
{
HRT := THRTimer.Create;
HRT.StartTimer;  Сброс таймера в ноль
HRT.ReadTimer;   Возвращает отсчитанное время в миллисекундах
начиная со времени старта
}
 
unit HRTimer;
 
interface
 
uses Windows;
 
type
  // --------------------- Класс - высокоточный таймер -------------------------
  THRTimer = class(TObject)
    constructor Create;
    function StartTimer: Boolean; // Обнуление таймера
    function ReadTimer: Double;   // Чтение значения таймера в миллисекундах
  private
    StartTime: Double;
    ClockRate: Double;
  public
    Exists: Boolean;    // Флаг успешного создания таймера
  end;
 
var
  Timer: THRTimer; // Глобальая переменная. Создаётся при запуске программы
 
{ Фукнция высокоточной задержки.
 Delphi:
   Синтаксис: function HRDelay(const Milliseconds: Double): Double;
   Milliseconds: Double - задержка в миллисекундах (может быть дробной)
   Результат функции - фактически произошедшая задержка с погрешностью.
   Пример вызова функции: X:= HRDelay(100.0); или HRDelay(100.0);
 
 C++Builder:
   Синтаксис: double HRDelay(const double Milliseconds);
   Double Milliseconds - задержка в миллисекундах (может быть дробной)
   Результат функции - фактически произошедшая задержка с погрешностью.
   Пример вызова функции: double X = HRDelay(100.0); или HRDelay(100.0);}
function HRDelay(const Milliseconds: Double): Double;
 
implementation
 
function HRDelay(const Milliseconds: Double): Double;
begin
  Timer.StartTimer();
  repeat
    Result:= Timer.ReadTimer();
  until Result >= Milliseconds;
end;
 
{ THRTimer }
 
constructor THRTimer.Create;
var
  QW: LARGE_INTEGER;
begin
  inherited Create;
  Exists := QueryPerformanceFrequency(Int64(QW));
  ClockRate := QW.QuadPart;
end;
 
function THRTimer.StartTimer: Boolean;
var
  QW: LARGE_INTEGER;
begin
  Result := QueryPerformanceCounter(Int64(QW));
  StartTime := QW.QuadPart;
end;
 
function THRTimer.ReadTimer: Double;
var
  ET: LARGE_INTEGER;
begin
  QueryPerformanceCounter(Int64(ET));
  Result := 1000.0 * (ET.QuadPart - StartTime) / ClockRate;
end;
 
initialization
  Timer:= THRTimer.Create();
 
finalization
  Timer.Free();
 
end.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 2 января 2012, 10:39 [#5]:

Как эта хрень работает на кирпичах с переменной частотой, я не знаю, говорю честно и заранее. Проверяй сам, братэлло.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 5 января 2012, 14:56 [#6]:

Спасибо, еще раз всех с Новым Годом :))
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:46
Выполнено за 0.02 сек.