- -pv
スレッドの閲覧状況:
現在、- がスレを見ています。
これまでに合計 - 表示されました。
※PC・スマホの表示回数をカウントしてます。
※24時間表示がないスレのPVはリセットされます。

Lazarus と Free Pascal

※ID非表示スレ
1名無しさん@おーぷん:2015/12/09(水)12:38:51 ID:???
Lazarus Homepage
http://www.lazarus-ide.org/

Free Pascal - Advanced open source Pascal compiler for Pascal and Object Pascal - Home Page
http://www.freepascal.org/

>>1-10 その他の情報
741名無しさん@おーぷん :2018/06/13(水)18:29:38 ID:???
ここも良くわからないな
1024+8 の heaprecord とは何だ?

blocksize = 16; { at least size of freerecord }
blockshift = 4; { shr value for blocksize=2^blockshift}
maxblocksize = 512+blocksize; { 1024+8 needed for heaprecord }
742名無しさん@おーぷん :2018/06/13(水)18:45:42 ID:???
fixedsize は 大きく確保したメモリを
同じサイズで小分けして使うタイプのメモリ
743名無しさん@おーぷん :2018/06/13(水)19:19:46 ID:???
要求サイズが524バイト以下の時に fixedchunk になる

525バイト以上なら サイズいろいろchunk になる

サイズいろいろchunk が ReallocMem(P, 263) 以下だと、
ポインタが変わってコピーが発生する
744名無しさん@おーぷん :2018/06/14(木)01:16:11 ID:???
inline関数内が空だと、何も挿入されないんだね
745名無しさん@おーぷん :2018/06/14(木)01:51:09 ID:???
{$I %FILE%}と{$I %LINE%} を渡せば Assertもどきを作れる
746名無しさん@おーぷん :2018/06/14(木)02:16:27 ID:???
ReallocMem でコピーが発生するのは、ポインタが変わった時だけみたいだが

だから、 SetLength で一つずつ増やしていっても、毎回コピーが発生するとは
限らないはず。
747名無しさん@おーぷん :2018/06/15(金)04:21:54 ID:???
出力がちょっと安定しないが、 262127+1 の方が 262128+1 より遅いんよ

https://wandbox.org/nojs/fpc-3.0.2/permlink/TCWYnuz5PaJGV4em

uses
 Types, SysUtils;

function Test(Len: Integer): Int64;
var
 A: TStringDynArray;
 I: Integer;
 T: Int64;
begin
 Result := 0;
 for I := 1 to 1000 do
 begin
  A := nil;
  SetLength(A, Len);

  T := GetTickCount64;
  SetLength(A, Len + 1);
  Inc(Result, GetTickCount64 - T);
 end;
end;

begin
 WriteLn(Test(65519));
 WriteLn(Test(65520));
 WriteLn(Test(262127));
 WriteLn(Test(262128));
end.

1
0
4
2
748名無しさん@おーぷん :2018/06/15(金)04:24:30 ID:???
自前のPCだと100回に減らしてこう

2
0
268
0
749名無しさん@おーぷん :2018/06/15(金)04:26:35 ID:???
WandBoxのサーバがほとんど1ms以内に終わらせているかもしれんね
さすがに600倍の性能差のPCは無いやろ
750名無しさん@おーぷん :2018/06/15(金)04:32:17 ID:???
1ms未満だと、1000回実行する意味なかったわ
偶然またぐかもしれないってだけで。

自宅PCの場合、2〜3ms掛かってるってことだ

新着レスの表示 | ここまで読んだ

名前: mail:





Lazarus と Free Pascal
CRITEO