> PS: Yes, symbols in Julia should be bitstypes.

No, it's a object reference and isn't a `isbits()` type.


>
> On Wed, Aug 17, 2016 at 8:26 AM, Cedric St-Jean <[email protected]>
> wrote:
>
>> Good points.
>>
>> Given that symbols have a name which is a string, I don't see how they
>> could be a bits-type unless they just became numbers to index into a global
>> array somewhere...... i.e. a pointer. Stack-allocating non-bits-type
>> immutables is on the roadmap to 1.0, so that should solve your problems.
>>
>> Maybe you can solve the CategorizedPoint problem by using an @enum.
>>
>> On Wed, Aug 17, 2016 at 6:48 AM, Oliver Schulz <
>> [email protected]> wrote:
>>
>>> Hello Andreas,
>>>
>>> consider iterating over a Dict{Symbol,Int64}:
>>>
>>> d = Dict(:foo => 42, :bar => 77)
>>> for x in d println("$(typeof(x)), $(isbits(x))") end
>>>
>>>
>>> During iteration, a lot of stack allocated "Pair{Symbol,Int64}" objects
>>> are created. That is very bad for performance.
>>>
>>> immutable CategorizedPoint
>>>     x::Float64
>>>     y::Float64
>>>     category::Symbol
>>> end
>>>
>>>
>>> Also, consider a (hypothetical) data type for categorized points (with a
>>> finite number of categories - but extensible, so that Symbol is a better
>>> fit than using an enum):
>>>
>>> immutable CategorizedPoint
>>>     x::Float64
>>>     y::Float64
>>>     category::Symbol
>>> end
>>>
>>> I would definitely want this to be a bits-type, and not have every
>>> instance heap-allocated.
>>>
>>>
>>> Cheers,
>>>
>>> Oliver
>>>
>>>
>>> On Wednesday, August 17, 2016 at 11:44:13 AM UTC+2, Andreas Lobinger
>>> wrote:
>>>>
>>>> Hello colleague,
>>>>
>>>> On Wednesday, August 17, 2016 at 11:12:51 AM UTC+2, Oliver Schulz wrote:
>>>>>
>>>>> Sure -  I was assuming that as Symbol (as an interned string) is
>>>>> basically just a pointer. So comparisons are O(1), etc. What I'd like to
>>>>> understand is, why can't it be a bitstype? Currently, it's not, so Symbol
>>>>> cannot be used in a lightweight (i.e. stack-allocated) immutable type. I
>>>>> assume there's a good reason for it, I just want to understand why.
>>>>>
>>>>
>>>> Could you make an example how you would like to use Symbol in
>>>> lightweight types?
>>>>
>>>>
>>
>
>
> --
> Erik Schnetter <[email protected]> http://www.perimeterinstitute.
> ca/personal/eschnetter/
>

Reply via email to