Tcl Source Code

Artifact [6b244c6cc1]
Login

Artifact 6b244c6cc11dae751122fc9969921e96ebd5e2bd1ed92d1ffe9f5a1f28482a46:

Attachment "CreateAndRead.tcl" to ticket [da16d15574] added by pointsman 2024-01-08 00:02:30.
set fileName "test.txt"
set bufSize [expr 4096 * 1]

puts "Tcl version: [info patchlevel] on $tcl_platform(platform)"

# Create large file.
set ten "123456789\n"
set line [string repeat $ten 10]
set str [string repeat $line 10000000]

set fp [open $fileName w]
fconfigure $fp -translation lf
puts -nonewline $fp $str
close $fp

set size [file size $fileName]
puts "File size  : $size"
puts "Buffer size: $bufSize"

# Read using 3 different modes.
foreach mode { 1 2 3 } {
    catch { unset str }
    set fp [open $fileName r]
    # fconfigure $fp -translation binary
    set startTime [clock milliseconds]

    if { $mode == 1 } {
        while { 1 } {
            set buf [read $fp $bufSize]
            if { $buf eq "" } {
                break
            }
            append str $buf
        }
    } elseif { $mode == 2 } {
        set str [read $fp]
    } elseif { $mode == 3 } {
        set str [read $fp $size]
    }
    set endTime [clock milliseconds]
    puts [format "Time mode $mode: %.2f secs" [expr {( $endTime - $startTime ) / 1.0E03 }]]
    close $fp
}