[SNMP4J] TableUtils - more efficient fetching of sparse tables

Frank Fock fock at agentpp.com
Sat Dec 12 15:17:19 CET 2015


Hi Michal,

You can test the code in the latest SNMP4J 2.4.0 SNAPSHOT that built a 
few minutes ago:
https://oosnmp.net/dist/snapshot/org/snmp4j/snmp4j/2.4.0-SNAPSHOT/

The optimized algorithm seems to be significantly faster for nearly any 
sparse table, especially
if one reduces the max-repetitions to a lower value than the average 
number of missing values in a
column.

Best regards,
Frank

Am 07.12.2015 um 14:20 schrieb Michał Steiner:
> Great! I can be first to test it.
> I agree that improvement will be visible only in specific cases.  We 
> have a tables  with  almost 200 columns where some of them are full, 
> some are empty or have just couple of cells with value. So in our case 
>  it could be huge improvement.
>
> -- 
> Michal
>
> 2015-12-07 12:35 GMT+01:00 Frank Fock <fock at agentpp.com 
> <mailto:fock at agentpp.com>>:
>
>     Hi Michal,
>     The proposed improvement can be indeed applied to any column,
>     but will have an effect only if the a lot of cells are missing and
>     the distribution is asymmetric.
>     I will try to implement the improvement for SNMP4J 2.4.0
>
>     Best regards
>     Frank
>
>     > Am 02.12.2015 um 09:19 schrieb Michał Steiner <mist at mist.pl
>     <mailto:mist at mist.pl>>:
>     >
>     > Hi,
>     >
>     > I've noticed that getTable method in org.snmp4j.util.TableUtils
>     could be
>     > more efficient for sparse tables.
>     >
>     > Consider table with 3 columns and 3 rows, but in first column
>     there is a
>     > lot of empty cells:
>     >
>     > Column1           Column2        Column3
>     > value-1-1         value-2-1     value-3-1
>     > <empty>           value-2-2     value-3-2
>     > <empty>           value-2-3     value-3-3
>     >
>     > Today implementation works more or less like this:
>     >
>     > get-next   Column1      Column2       Column3
>     > response   value-1-1    value-2-1     value-3-1
>     >
>     > get-next   value-1-1      value-2-1     value-3-1
>     > response   value-2-1      value-2-2     value-3-2
>     >
>     > get-next   value-1-1       value-2-2  value-3-2
>     > response   value-2-1       value-2-3  value-3-3
>     >
>     > get-next   value-1-1      value-2-3     value-3-3
>     > response   value-2-1      value-3-3     value from next table
>     >
>     >
>     > As you can see  request for    value-1-1  is done 3 times and
>     only first
>     > one makes sense.
>     > This is  an issue for large tables (lot of columns and rows)
>     with many
>     > empty cells.
>     > This algorithm can be improved. After first response from other
>     column we
>     > can just stop asking about it. Conversation will look like this:
>     >
>     >
>     > get-next    Column1    Column2        Column3
>     > response   value-1-1   value-2-1      value-3-1
>     >
>     > get-next   value-1-1    value-2-1     value-3-1
>     > response   value-2-1    value-2-2     value-3-2   <-- value-2-1 
>     is from
>     > different column
>     >
>     > get-next               value-2-2      value-3-2 <-- in next
>     requests we
>     > skip  first column
>     > response               value-2-3      value-3-3
>     >
>     > get-next               value-2-3      value-3-3
>     > response               value-3-3      value from next table
>     >
>     > I guess that bulk request are handled in the similar way, aren't
>     they ?
>     >
>     > Are my observations correct ?
>     > What do you think about such improvement?
>     >
>     >
>     > Regards
>     >
>     > Michal
>     > _______________________________________________
>     > SNMP4J mailing list
>     > SNMP4J at agentpp.org <mailto:SNMP4J at agentpp.org>
>     > https://oosnmp.net/mailman/listinfo/snmp4j
>
>

-- 
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231




More information about the SNMP4J mailing list