powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / int64 и перечисление в структуре
20 сообщений из 70, страница 3 из 3
int64 и перечисление в структуре
    #39466909
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикТолько всё равно медленно на 3 секунды примерно
Код: plaintext
T7250 6,5s  E5420 2,8s

только тебе эти секунды не надо, тебе нужно понимание того, как компилятор расскажет процессору что делать с твоим кодом.
а ты даже асм листинг толком посмотреть не можешь и на матчасть забиваешь ....
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466912
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Не инлайнят потому, что они жрут много executable памяти и занимают кучу регистров, которые нужны для оптимизации вне. У тебя тест простой, может и нет разницы, а на реальных тестах может сыграть роль
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466948
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНяшикТолько всё равно медленно на 3 секунды примерно
Код: plaintext
T7250 6,5s  E5420 2,8s

только тебе эти секунды не надо, тебе нужно понимание того, как компилятор расскажет процессору что делать с твоим кодом.
а ты даже асм листинг толком посмотреть не можешь и на матчасть забиваешь ....


К слову, если отрубить браузер, то при
Код: pascal
1.
2.
3.
4.
  TSPHPValue = packed record
  public
    TInt64: Int64;
    _Type: TEngineVarTypes;



Он как раз выдаёт 2.871028 сек. О чём лишний раз говорит, что я всё правильно делаю (можно забить на 19 байт, это не 24 и не 30 с лишним)

Только ваш северный процессор стоит $347.00 а мой детскопный $47.00


Сравнение ваших и моего процессора E3300
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466951
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшик,

Не инлайнят потому, что они жрут много executable памяти и занимают кучу регистров, которые нужны для оптимизации вне. У тебя тест простой, может и нет разницы, а на реальных тестах может сыграть роль

Пока не наблюдал проблем, я уже в VM машину включил их для переменных, которые активно участвуют в вызовах функций, констант и так далее

Возможно такой проблемы нету, из за того что я использую прямую адресацию к своей структуре. И компилятору не составляет труда вставить его неизменным
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39466978
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Мне кажется, ты уже долго мучаешься с ним
Давай ускоряйся
И помни, что важна не скорость компиляции, а скорость исполнения. Или в PHP это одно и то же? )
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467018
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUНяшик,

Мне кажется, ты уже долго мучаешься с ним
Давай ускоряйся
И помни, что важна не скорость компиляции, а скорость исполнения. Или в PHP это одно и то же? )


Ну как бы, я параллельно задаю вопросы и реализовываю по плану желаемое (И потом, если что - то узнаю полезное, изменяю.)

Насчёт скорости компиляции речь не шла. Я старался сделать контейнер компактнее, и максимально быстро (Но жертвовать приходиться всегда)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467084
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если отрубить браузервот-вот, ос и другие проги отбирают кеш.
всё правильно делаю
объясни, что тут и как, и будет всё++
Код: pascal
1.
2.
3.
new(TBoxArray);
SetLength(TBoxArray^, SizeOf(Value));
CopyArray(@TBoxArray^[0], @Value, System.TypeInfo(string), 1); 
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467175
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMобъясни, что тут и как, и будет всё++
Код: pascal
1.
2.
3.
new(TBoxArray);
SetLength(TBoxArray^, SizeOf(Value));
CopyArray(@TBoxArray^[0], @Value, System.TypeInfo(string), 1); 



Надо объявить память под переменную, в переменной выделить память 4 байта под структуру StrRec

Данная структура хранит информацию о длине строки, счётчик ссылок, и информацию о кодировки с прочей лабудой.


Дальше, мы копируем байты основной строки в наш бокс, который может держать в себе PAnsiChar и PWideChar с string который в итоге будет UnicodeString

Перезапись, в функции CopyArray а именно _LStrAsg -> _LStrClr вызовет FreeMem и не будет утечек.

Длину строки можно получить так (в быстрой формулировки)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function TSPHPValue.StringLen(): integer;
var
  S: PUnicodeString;
begin
  if _Type = SString then
  begin
    if TBoxArray <> nil then
    begin
      S := PUnicodeString(@TBoxArray^[0]);
      if S^ <> '' then
        Exit(PInteger(PByte(S^) - 4)^);
    end;
  end;
  Exit(0);
end;

...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467234
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
НяшикSOFT FOR YOUНяшик,

Мне кажется, ты уже долго мучаешься с ним
Давай ускоряйся
И помни, что важна не скорость компиляции, а скорость исполнения. Или в PHP это одно и то же? )


Ну как бы, я параллельно задаю вопросы и реализовываю по плану желаемое (И потом, если что - то узнаю полезное, изменяю.)

Насчёт скорости компиляции речь не шла. Я старался сделать контейнер компактнее, и максимально быстро (Но жертвовать приходиться всегда)

ты сначала сделай, чтобы всё работало, весь функционал твоего интерпретатора PHP работал от начала и до конца и был покрыт тестами, а потом будешь гнаться за скоростью.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467238
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
память 4 байта под структуру StrRec Данная структура хранит информацию о длине строки, счётчик ссылок, и информацию о кодировки с прочей лабудой. и всё в 4 байта ?
копируем байты основной строки в наш боксв бокс, так там StrRec, не?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467247
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorНяшикпропущено...



Ну как бы, я параллельно задаю вопросы и реализовываю по плану желаемое (И потом, если что - то узнаю полезное, изменяю.)

Насчёт скорости компиляции речь не шла. Я старался сделать контейнер компактнее, и максимально быстро (Но жертвовать приходиться всегда)

ты сначала сделай, чтобы всё работало, весь функционал твоего интерпретатора PHP работал от начала и до конца и был покрыт тестами, а потом будешь гнаться за скоростью.

Ну вот zend переписывали, и что это дало??? Да, безусловно есть оптимизация с предыдущими тестами. Но не на много. А теперь они оптимизируют ядро на вызовах (вырезая их)


Bred eFeMпамять 4 байта под структуру StrRec Данная структура хранит информацию о длине строки, счётчик ссылок, и информацию о кодировки с прочей лабудой. и всё в 4 байта ?
копируем байты основной строки в наш боксв бокс, так там StrRec, не?

Выделить надо 4 байта, для того что бы записать туда. Это не я придумал, это даже в TValue реализовано (От туда и подчеркнул для себя).

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function _NewUnicodeString(CharLength: Integer): Pointer;
var
  P: PStrRec;
begin
  Result := nil;
  if CharLength > 0 then
  begin
    // Allocate a memory with record and extra wide-null terminator.
    if CharLength >= (MaxInt - SizeOf(StrRec)) div SizeOf(WideChar) then _IntOver;
    GetMem(P, SizeOf(StrRec) + (CharLength + 1) * SizeOf(WideChar));
    Result := Pointer(PByte(P) + SizeOf(StrRec));
    P.length := CharLength;
    P.refCnt := 1;
    P.elemSize := SizeOf(WideChar);
    P.codePage := Word(DefaultUnicodeCodePage);
    PWideChar(Result)[CharLength] := #0;
  end;
end;
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467271
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это даже в TValue реализованону, и где там слово '4' ?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467274
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Няшикdefecatorпропущено...


ты сначала сделай, чтобы всё работало, весь функционал твоего интерпретатора PHP работал от начала и до конца и был покрыт тестами, а потом будешь гнаться за скоростью.

Ну вот zend переписывали, и что это дало??? Да, безусловно есть оптимизация с предыдущими тестами. Но не на много. А теперь они оптимизируют ядро на вызовах (вырезая их)

пытаясь сразу сделать супер-пупер-быстро, вместо безошибочной реализации всего функционала,
ты углубляешься в детали, которые на данном этапе малосущественны.
Будешь как SOFT FOR YOU - море говнокода, понты "у меня самый быстрый в мире код", а на выходе - пшик.
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467277
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM это даже в TValue реализованону, и где там слово '4' ?


4 это Pointer, моя ошибка что не уточнил.. Извиняюсь !

Вот приме того что будет.





defecatorНяшикпропущено...


Ну вот zend переписывали, и что это дало??? Да, безусловно есть оптимизация с предыдущими тестами. Но не на много. А теперь они оптимизируют ядро на вызовах (вырезая их)

пытаясь сразу сделать супер-пупер-быстро, вместо безошибочной реализации всего функционала,
ты углубляешься в детали, которые на данном этапе малосущественны.
Будешь как SOFT FOR YOU - море говнокода, понты "у меня самый быстрый в мире код", а на выходе - пшик.

Функционал библиотечных функций я хочу реализовывать на самом SPHP, а потом возможно конвертировать в Delphi код и компилировать (Это позволить качественно дебажить код из самого SPHP и при желании собирать в бинарник полностью, без VM)
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467286
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Сам ты говнокод )
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467289
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 это Pointerхорошо, значит у тебя TBoxArray это Pointer, который указывает на ?
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39467295
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM4 это Pointerхорошо, значит у тебя TBoxArray это Pointer, который указывает на ?

В общем вот, что получается.. Я как то на словах плохо объясняю, мне это не дано от слова совсем...
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39469861
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы наверно будете смеяться,но это надо точно занести в топик как я ложанулся...

Код: pascal
1.
2.
3.
4.
  TSPHPBox<T> = packed record
    value: T;
    _type: TEngineVarTypes;
  end;



Я думал что на структуры это не распространяется
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39469863
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик, будем:

- а зачем там packed - наверное можно убрать
- и для чего _type, если есть <T> - тоже убрать
- а зачем то, что осталось - хз
...
Рейтинг: 0 / 0
int64 и перечисление в структуре
    #39469865
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeMНяшик, будем:

- а зачем там packed - наверное можно убрать
- и для чего _type, если есть <T> - тоже убрать
- а зачем то, что осталось - хз

_type нужен для описания таких типов из PHP как resource, iterables, object, callable (Собственно их описания не уместишь <T>)

А packed остался просто так (Вполне возможно не нужен. Но пока не буду убирать.)
...
Рейтинг: 0 / 0
20 сообщений из 70, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / int64 и перечисление в структуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]