In pursuit of optimizing the following code, I realized that if somehow the 
loop is paralleled (i.e. each thread operates on a certain chunk of the array), 
the code may execute faster:
    
    
    import tables, os, parseutils, strutils
    
    proc ytz(args: openArray[string]): uint =
        var
            table = initTable[uint, uint]()
            n: uint
        for numStr in args:
            if parseUInt(numStr, n) == 0:
                quit("Parse error: " & numStr)
            table.mgetOrPut(n, 0) += n # here
            if table[n] > result:  # here
                result = table[n]  # and here
    
    proc main() =
        echo(paramStr(1).open().readAll().splitLines().ytz())
    
    main()
    
    
    Run

However I need to access the table (both mutably and immutably) in the places I 
pointed out. Is there any way I can leverage multiple cores of the target 
system to maximize efficiency? As far as I know Java has concurrent hashmap but 
I never used it myself.

Reply via email to