Sign in to follow this  
Followers 0
Skrip

Faster 'FileReadLine'?

4 posts in this topic

Hey guys. I am trying to make a script faster. I need to read EVERY line from a 28,168KB (~350,000 lines) text file, and FileReadLine() does not seem to be very fast. It is reading about 4-6 per second. Each line is between 20-150 characters long.

Is there a faster alternative to FileReadLine?

Or maybe, would an array be faster? What is the limit for how much an array can hold? It might have to hold up 500,000 dimensions....


[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Share this post


Link to post
Share on other sites



Go for it! I don't think you'll fill up an array anytime soon...

15. What are the current technical limits of AutoIt v3?

Here are details of the current technical limits of AutoIt. Please note that some of the limits are theoretical and you may run into performance or memory related problems before you reach the actual limit.

Maximum length of a single script line: 4,095

Maximum string length: 2,147,483,647 characters

Number range (floating point): 1.7E308 to 1.7E+308 with 15-digit precision

Number range (integers): 64-bit signed integer

Hexadecimal numbers: 32-bit signed integer (0x80000000 to 0x7FFFFFFF)

Arrays: A maximum of 64 dimensions and/or a total of 16 million elements

Maximum depth of recursive function calls: 5100 levels

Maximum number of variables in use at one time: No limit

Maximum number of user defined functions: No limit

Maximum number of GUI windows: No limit

Maximum number of GUI controls: 65532

Share this post


Link to post
Share on other sites

And...I just remembered why I hate arrays. lol


[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Share this post


Link to post
Share on other sites

FileReadLine() does not seem to be very fast

If you use it without opening the file first then yes, it can be slow...

;Write to file *Around* 28,168 KB
$hFOpen = FileOpen("File.txt", 2)

For $i = 1 To 4650
    FileWriteLine($hFOpen, $i)
Next

FileClose($hFOpen)

;Now we read from that file into string...
$iTimer = TimerInit()

$hFOpen = FileOpen("File.txt", 0)
$sReadLines = ""

While 1
    $sReadLines &= FileReadLine($hFOpen) & @CRLF
    If @error <> 0 Then ExitLoop
WEnd

FileClose($hFOpen)

;Show the time
ConsoleWrite(StringFormat("%i lines in %.2f milliseconds ;)\n", 4650, TimerDiff($iTimer)))

;Show the string to the console
ConsoleWrite($sReadLines)

What is the limit for how much an array can hold? It might have to hold up 500,000 dimensions....

You don't need that much dimentions :P

16 million elements (wich is the limit) can hold 16 million lines...

;Write to file *Around* 28,168 KB
$hFOpen = FileOpen("File.txt", 2)

For $i = 1 To 4650
    FileWriteLine($hFOpen, $i)
Next

FileClose($hFOpen)

;Now we read from that file into Array...
$aReadLines = StringSplit(StringStripCR(FileRead("File.txt")), @LF)

For $i = 1 To $aReadLines[0]
;Show the current element to the console
    ConsoleWrite($aReadLines[$i] & @LF)
Next

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0