[Lazarus] FileUtil.FindAllFiles - changes strings inside

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Lazarus] FileUtil.FindAllFiles - changes strings inside

Free Pascal - Lazarus mailing list
procedure TFileSearcher.Search(ASearchPath: String; ASearchMask: String;
   ASearchSubDirs: Boolean; CaseSensitive: Boolean = False);

     while ASearchPath<>'' do begin
       p:=Pos(FPathSeparator,ASearchPath);
       if p<1 then
         p:=length(ASearchPath)+1;
       Dir:=ResolveDots(LeftStr(ASearchPath,p-1));
       Delete(ASearchPath,1,p);


you see that to iterate over all items in char-separated ASearchPath,
code modifies str, ie deletes parts of it. It's slow! We should not
modify str here. It's easy- save old-index, new-index, and get Copy(n1,
n2-n1{+delta}).

Didn't see why ASearchMask is not "const", maybe same bad.

Alexey Torgashin

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] FileUtil.FindAllFiles - changes strings inside

Free Pascal - Lazarus mailing list
On Mon, Sep 21, 2020 at 12:19 AM AlexeyT via lazarus
<[hidden email]> wrote:

> you see that to iterate over all items in char-separated ASearchPath,
> code modifies str, ie deletes parts of it. It's slow! We should not
> modify str here. It's easy- save old-index, new-index, and get Copy(n1,
> n2-n1{+delta}).

Premature optimization.
File IO is orders of magnitude slower that iteration over a string.

--
Bart
--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] FileUtil.FindAllFiles - changes strings inside

Free Pascal - Lazarus mailing list
On 9/21/2020 3:16 AM, Bart via lazarus wrote:
> On Mon, Sep 21, 2020 at 12:19 AM AlexeyT via lazarus
> <[hidden email]> wrote:
>
>> you see that to iterate over all items in char-separated ASearchPath,
>> code modifies str, ie deletes parts of it. It's slow! We should not
>> modify str here. It's easy- save old-index, new-index, and get Copy(n1,
>> n2-n1{+delta}).
> Premature optimization.
> File IO is orders of magnitude slower that iteration over a string.

+1



--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus