> Le 8 nov. 2017 à 07:47, Wayne Stewart via 4D_Tech <[email protected]> a
> écrit :
>
> Hi,
>
> Any more thoughts on this? This is what I do currently:
>
> $oldBLOB_x:=Old($CurrentField_ptr->)
>
> Case of
> : (BLOB size($oldBLOB_x)=0) & (BLOB size($CurrentField_ptr->)=0)
> : (Generate digest($oldBLOB_x;MD5 digest)=Generate
> digest($CurrentField_ptr->;MD5 digest))
> Else
> // It's different
> End case
>
> Is there a more efficient mechanism?
Hi Wayne,
I tried: convert blob to picture+Equal picture, md5, sha1, sha2…
Forget Equal pictures, stupid idea :-/
But I was surprised to find:
• sha1 always faster than md5
• sha2 result very close to md5
(at least with different test documents I used and 4dv16R5 64b)
+++
C_PICTURE($mask_i)
$path1_t:=Convert path POSIX to system("/Users/arnaud/Pictures/161002_1.jpeg")
$path2_t:= path1_t
C_BLOB($1_x;$2_x)
DOCUMENT TO BLOB($path1_t;$1_x)
DOCUMENT TO BLOB($path2_t;$2_x)
BLOB TO PICTURE($1_x;$1_i)
BLOB TO PICTURE($2_x;$2_i)
ARRAY TEXT($test_at;0)
ARRAY LONGINT($ms_al;0)
$duration_l:=60*2
$i_l:=0
$i_l:=$i_l+1
$j_l:=0
$end_l:=Tickcount+$duration_l
Repeat
$j_l:=$j_l+1
$_b:=Equal pictures($1_i;$2_i;$mask_i)
ASSERT($_b)
Until (Tickcount>$end_l)
APPEND TO ARRAY($test_at;"Equal pictures")
APPEND TO ARRAY($ms_al;$j_l)
$i_l:=$i_l+1
$j_l:=0
$end_l:=Tickcount+$duration_l
Repeat
$j_l:=$j_l+1
$1_t:=Generate digest($1_x;MD5 digest)
$2_t:=Generate digest($2_x;MD5 digest)
ASSERT($1_t=$2_t)
Until (Tickcount>$end_l)
APPEND TO ARRAY($test_at;"MD5 digest")
APPEND TO ARRAY($ms_al;$j_l)
$i_l:=$i_l+1
$j_l:=0
$end_l:=Tickcount+$duration_l
Repeat
$j_l:=$j_l+1
$1_t:=Generate digest($1_x;SHA1 digest)
$2_t:=Generate digest($2_x;SHA1 digest)
ASSERT($1_t=$2_t)
Until (Tickcount>$end_l)
APPEND TO ARRAY($test_at;"SHA1 digest")
APPEND TO ARRAY($ms_al;$j_l)
$i_l:=$i_l+1
$j_l:=0
$end_l:=Tickcount+$duration_l
Repeat
$j_l:=$j_l+1
$1_t:=Generate digest($1_x;SHA256 digest)
$2_t:=Generate digest($2_x;SHA256 digest)
ASSERT($1_t=$2_t)
Until (Tickcount>$end_l)
APPEND TO ARRAY($test_at;"SHA256 digest")
APPEND TO ARRAY($ms_al;$j_l)
$msg_t:=""
For ($i_l;1;Size of array($ms_al))
$msg_t:=$msg_t+"\r"+$test_at{$i_l}+"="+String($ms_al{$i_l})
End for
ALERT($msg_t)
+++
--
Arnaud de Montard
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ: http://lists.4d.com/faqnug.html
Archive: http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************