On 2006-11-08, Farraige <[EMAIL PROTECTED]> wrote:
>
> ...
>
> The main part of my algorithm now looks something like ...
>
> merge(t1, t2, keyColumns, columnsToBeUpdated)
>
> .......
>
>         for row_t1 in t1:
>             for  row_t2 in t2:
>                 if [row_t1[i] for i in keyColumns] == [row_t2[j] for j
> in keyColumns]:
>                     # the keys are the same
>                     for colName in columnsToBeUpdated:
>                         row_t1[colName] = row_t2[colName]
>
>                     # go outside the inner loop - we found a row with
>                     # the same key in the table
>                     break
>
> In my algorithm I have 2 for loops and I have no idea how to optimise
> it (maybe with map? )
> I call this method for very large data and the performance is a
> critical issue for me :(
>
> I will be grateful for any ideas

One idea would be to precompute the list comprehensions in the if test.

    p2 = [[row_t2[i] for i in keyColums] for row_t2 in t2]
    for row_t1 in t1:
        proj1 = [row_t1[i] for i in keyColumns]
        for row_t1, proj2 in izip(t2, p2):
            if proj1 == proj2:
               ...


-- 
Antoon Pardon
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to