function [] = test()
    num = 1000;
    a = randi([0 255],[1000 num]);
    b = Subsasgntest(randi([0 255],[1000 num]));
    c = randi([0 255],[1 num]);
    tic;
    for i = 1:length(c)
        a(2,i) = c(i);
    end
    toc
    tic;
    for i = 1:length(c)
        b(3,i) = c(i);
    end
    toc
    b = b.setKind(1);
    tic;
    for i = 1:length(c)
        b(4,i) = c(i);
    end
    toc
end
classdef Subsasgntest
    
    properties
        val
        kind = 0;
    end
    
    methods
        function obj = Subsasgntest(in)
            obj.val = in;
        end
        
        function obj = setKind(obj,kind)
            obj.kind = kind;
        end
        
        function obj = subsasgn(obj,sub,varargin)
            
            if(isequal(sub.type,'()'))
                if isequal(obj,[])
                    error('Not yet implemented!');
                end
                if(isa(varargin{1},'Subsasgntest'))
                    switch obj.kind
                        case 0
                            obj.val = builtin('subsasgn',obj.val,sub,varargin{1}.val);
                        case 1
                            obj.val = subsasgn(obj.val,sub,varargin{1}.val);
                    end
                else
                    switch obj.kind
                        case 0
                            obj.val = builtin('subsasgn',obj.val,sub,varargin{1});
                        case 1
                            obj.val = subsasgn(obj.val,sub,varargin{1});
                    end
                end
            else
                error('This is not supported for this class!');
            end
        end
    end
end
Elapsed time is 0.000019 seconds.
Elapsed time is 4.477900 seconds.
Elapsed time is 4.449843 seconds.