Johan Hake wrote:
> On Tuesday 06 October 2009 22:31:27 Garth N. Wells wrote:
>> Johan Hake wrote:
>>> On Tuesday 06 October 2009 22:18:04 Anders Logg wrote:
>>>> On Tue, Oct 06, 2009 at 09:13:45PM +0100, Garth N. Wells wrote:
>>>>> Anders Logg wrote:
>>>>>> On Tue, Oct 06, 2009 at 10:05:24PM +0200, Johan Hake wrote:
>>>>>>> On Tuesday 06 October 2009 21:58:29 Andy Ray Terrel wrote:
>>>>>>>> On Tue, Oct 6, 2009 at 2:43 PM, Anders Logg <l...@simula.no> wrote:
>>>>>>>>> On Tue, Oct 06, 2009 at 02:28:40PM -0500, Andy Ray Terrel wrote:
>>>>>>>>>> Sorry for being dense but computing the SHA1 hash for what
>>>>>>>>>> essentially is a string compare seems a bit overkill.
>>>>>>>>> I want to avoid a call to strcmp in a piece of code that needs to
>>>>>>>>> be fast. What I do (it seems to work now) is to compute the 20 byte
>>>>>>>>> SHA-1 hash from the ~40 byte finite element signature which is
>>>>>>>>> typically something like
>>>>>>>>>
>>>>>>>>>  FiniteElement('Lagrange', 'triangle', 1)
>>>>>>>>>
>>>>>>>>> I then cast the SHA-1 hash to an 8 byte void* and use that for
>>>>>>>>> comparison. This may not be very safe but this is not exactly
>>>>>>>>> cryptography. The number of possible hashes is the same as the
>>>>>>>>> address space so it should be fine.
>>>>>>>> Yes I guess if you have a large number of comparisons it might be
>>>>>>>> faster.  I forget there are a lot of signature checks for the
>>>>>>>> function space stuff.
>>>>>>>>
>>>>>>>> Computing the hash is O(n) just like strcmp, it really depends on
>>>>>>>> the constants.  I would just do the timing before I said anything.
>>>>>>> Would it be an idea to extend ufc::finite_element with a
>>>>>>> hash_signature()? Then you can compute the hash using hashlib in
>>>>>>> python during code creation.
>>>>>>>
>>>>>>> Johan
>>>>>> Sounds like a good idea. Only it requires changes to DOLFIN, UFC, FFC
>>>>>> and SyFi...
>>>>>>
>>>>>> Are there any objections to this?
>>>>> I'm not sure that this is a good idea. It complicates UFC.
>>> Complicates? One function returning a string?
>> How would I write it by hand? 
> 
> I have heard that the human brain is an amazing machinery. Couldn't you just 
> learn the hash-algorithm and type it right in? ;)
> 

Maybe, but I would have to practice a little first.

Garth

>> It's common for new methods that the UFC-compliant code is hand generated.
> 
> Ok, see you point. I have _never_ written a single line of ufc code so it did 
> not struck me as a problem.
> 
> Johan
> 
>> Garth
>>
>> But I agree with Anders that it
>>
>>> requires a lot to change and that it therefore is a good thing to think
>>> about it.
>>>
>>>> It's either that or using boost. I'm looking at both options.
>>>>
>>>> Calling boost is simpler since it requires the smallest change. If we
>>>> decide to go with that option now, we can keep this in mind for the
>>>> next update of UFC.
>>> Sounds good.
>>>
>>> Johan
>>>
>>>> --
>>>> Anders
>>>>
>>>>> Garth
>>>>>
>>>>>>>> I looked there are a lot of libraries out there for this but OpenSSL
>>>>>>>> is by far the most pervasive.
>>>>>>>>
>>>>>>>> -- Andy
>>>>>>>>
>>>>>>>>>> On Tue, Oct 6, 2009 at 2:18 PM, Anders Logg <l...@simula.no> wrote:
>>>>>>>>>>> I'm contemplating adding a dependency to OpenSSL for computing
>>>>>>>>>>> hashes of things like element signatures.
>>>>>>>>>>>
>>>>>>>>>>> This is what breaks Kristian's code. Comparing element pointers
>>>>>>>>>>> does not work since the UFC class creates its own elements which
>>>>>>>>>>> are different from the ones existing in FunctionSpace classes.
>>>>>>>>>>>
>>>>>>>>>>> Would there be any difficulties with depending on OpenSSL? Are
>>>>>>>>>>> there simpler alternatives for a function that takes a string a
>>>>>>>>>>> returns a message digest like the SHA1 function in OpenSSL?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> -----BEGIN PGP SIGNATURE-----
>>>>>>>>>>> Version: GnuPG v1.4.9 (GNU/Linux)
>>>>>>>>>>>
>>>>>>>>>>> iEYEARECAAYFAkrLmCAACgkQTuwUCDsYZdEk3ACgl7+tHjclHzLesh+g/1vOzIo9
>>>>>>>>>>> tJsAn1fHGu+dzyA/ndNpy88/RFWNTbEB
>>>>>>>>>>> =24AA
>>>>>>>>>>> -----END PGP SIGNATURE-----
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> DOLFIN-dev mailing list
>>>>>>>>>>> DOLFIN-dev@fenics.org
>>>>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>>>>>>> _______________________________________________
>>>>>>>>>> DOLFIN-dev mailing list
>>>>>>>>>> DOLFIN-dev@fenics.org
>>>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>>>>>> -----BEGIN PGP SIGNATURE-----
>>>>>>>>> Version: GnuPG v1.4.9 (GNU/Linux)
>>>>>>>>>
>>>>>>>>> iEYEARECAAYFAkrLndAACgkQTuwUCDsYZdFlWACePT0FglJU+NTPnOBXi/h7WcHC
>>>>>>>>> E5EAn2vinxerlg6jTNuA4T+0Kp+CFuhz
>>>>>>>>> =68Dm
>>>>>>>>> -----END PGP SIGNATURE-----
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> DOLFIN-dev mailing list
>>>>>>>>> DOLFIN-dev@fenics.org
>>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>>>>> _______________________________________________
>>>>>>>> DOLFIN-dev mailing list
>>>>>>>> DOLFIN-dev@fenics.org
>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>>>> _______________________________________________
>>>>>>> DOLFIN-dev mailing list
>>>>>>> DOLFIN-dev@fenics.org
>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> - --
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> DOLFIN-dev mailing list
>>>>>>> DOLFIN-dev@fenics.org
>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>> _______________________________________________
>>>>> DOLFIN-dev mailing list
>>>>> DOLFIN-dev@fenics.org
>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>> _______________________________________________
>>> DOLFIN-dev mailing list
>>> DOLFIN-dev@fenics.org
>>> http://www.fenics.org/mailman/listinfo/dolfin-dev


_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@fenics.org
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to