![]() |
|
|
|
#1
|
||||
|
||||
|
Quote:
is more about hardware and btw scanning speed won't be noticeable when the difference is measured only in millisecond plus another thing is about compiler optimization which affects most on the speed(after hardware of course) |
|
#2
|
|||
|
|||
|
I don't agree with you here. Maybe it doesn't matter for searching a few MBs of data, but it will start to matter if you have to find 20 patterns in 2GB of data
|
|
#3
|
|||
|
|||
|
I think both your implementations are still not perfect. Think about this: https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm
or at least https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore%E2%80%93Horspool_algorithm This algorithm is even more efficient for byte search. Skip as many bytes as possible...
__________________
My blog: https://ntquery.wordpress.com |
|
#4
|
||||
|
||||
|
Quote:
Implementing Boyer Moore will definitely be a bit faster though. ![]() Comparing my FindPattern to the original posted above, mine sees a lot of improvement when the data being scanned within is large and the number of scans being done is high. For low amounts of scanning and where async is not required, then the original will tend to outperform mine. Overall it really depends on some specific factors: - The data size being scanned within. - The number of patterns being looked for. - Threading; is it required or not, (along with thread-safety). - Hardware can land up playing a roll as well etc. Another implementation that could make use of different hardware would be a GPU implementation, which could also have a handful of speed benefits depending on similar factors above. |
| The Following 2 Users Gave Reputation+1 to atom0s For This Useful Post: | ||
DMichael (01-18-2015) | ||
|
#5
|
|||
|
|||
|
Quote:
BMH was second place when I checked (57ms): Code:
FindPattern benchmark Page size: 4096, allocating 22 pages (including 2 guard pages). Running tests on 9 different implementations =========== Running M-i-K-e ran outside the area FAILED =========== Running Trippeh Finding pattern 0 x 1000 took 1774.23 ms. Finding pattern 1 x 1000 took 1905.49 ms. =========== Running Trippeh v2 Finding pattern 0 x 1000 took 81.864 ms. Finding pattern 1 x 1000 took 81.937 ms. =========== Running Trippeh v3 Failed, cheating with the pattern length! FAILED =========== Running learn_more Finding pattern 0 x 1000 took 204.665 ms. Finding pattern 1 x 1000 took 164.068 ms. =========== Running learn_more v2 Finding pattern 0 x 1000 took 82.226 ms. Finding pattern 1 x 1000 took 82.679 ms. =========== Running afffsdd Finding pattern 0 x 1000 took 40.943 ms. Finding pattern 1 x 1000 took 40.968 ms. =========== Running DarthTon Finding pattern 0 x 1000 took 56.974 ms. Finding pattern 1 x 1000 took 57.045 ms. =========== Running kokole Finding pattern 0 x 1000 took 122.41 ms. Finding pattern 1 x 1000 took 122.646 ms. Done. Press any key to continue . . . |
| The Following User Gave Reputation+1 to Nukem For This Useful Post: | ||
atom0s (01-19-2015) | ||
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| openssl signature for ida | skyper | General Discussion | 10 | 03-19-2012 17:33 |