FROM : Mike Ferris
DATE : Thu Apr 07 16:53:51 2005
>> Sure does!
>>
>> result = [employee valueForKey:@"name"];
>> vs.
>> result = [employee name];
>>
>> The second is:
>>
>> 1. Expressed directly in the target language (Occam's Razor,
>> anyone?)
>> 2. More compact
>> 3. Easier to read
>> 4. About an order of magnitude faster ( about 8 times, to be a bit
>> more precise )
>>
>> An order of magnitude here, an order of magnitude there, and soon
>> enough you're talking about real performance pigs...
>
> If you wrote everything in C instead of Objective-C, you'd lose all
> the overhead of method dispatch. How much longer does it take to
> dispatch a method call instead of just calling a function? If you
> wrote the whole thing in one long continuous stream of PowerPC
> assembly, it would be still faster, because you could hand-optimize
> the assembly and get it to run REALLY quickly! Of course, this is not
> a sign that either is better -- programmers get significant benefits
> from using C instead of assembly, and from using Objective-C instead
> of C, and from using bindings instead of straight method calls.
>
> In the case of bindings (as well as in the two examples I gave),
> bindings are not a pure *replacement* for method calls, they're an
> *alternative* to it that makes some things a lot easier at the cost of
> performance. They're not meant to be a replacement for routine
> accessor functions (though you can certainly use them for that!) but
> as a way of doing a particular sort of introspection that happens to
> be very useful for writing generic UI classes. The cases you'd use
> bindings in are *not* the cases where a simple accessor would be
> appropriate; they're the cases where using bindings instead of simple
> accessors allows one to eliminate 10 lines of code here, 10 lines of
> code there.
>
> All you've really managed to demonstrate is that bindings do not make
> a good replacement for simple accessor calls. We knew that already.
>
>
I think what Marcel is saying is not that generic KVC and bindings and
core data are bad. Just that generic accessors are appropriate to use
for generic things and specific ones are nicer to use for specific
things. That's why there should be both. I don't see much room for
argument that his second line of code above is more to-the-point.
And that's just what KVC is meant to give you. If you have foo/setFoo:
methods, KVC will work by calling them.
Now NSManagedObject gives you a way to have KVC without the specific
accessors, which is great for getting started quickly, and if wiring up
simply binding-based interfaces is all you'll use the objects for it is
probably sufficient. But if you will have a significant amount of code
written that talks directly to your model objects, it is nice to give
them a more convenient, specific, and typed API to use.
Mike Ferris
DATE : Thu Apr 07 16:53:51 2005
>> Sure does!
>>
>> result = [employee valueForKey:@"name"];
>> vs.
>> result = [employee name];
>>
>> The second is:
>>
>> 1. Expressed directly in the target language (Occam's Razor,
>> anyone?)
>> 2. More compact
>> 3. Easier to read
>> 4. About an order of magnitude faster ( about 8 times, to be a bit
>> more precise )
>>
>> An order of magnitude here, an order of magnitude there, and soon
>> enough you're talking about real performance pigs...
>
> If you wrote everything in C instead of Objective-C, you'd lose all
> the overhead of method dispatch. How much longer does it take to
> dispatch a method call instead of just calling a function? If you
> wrote the whole thing in one long continuous stream of PowerPC
> assembly, it would be still faster, because you could hand-optimize
> the assembly and get it to run REALLY quickly! Of course, this is not
> a sign that either is better -- programmers get significant benefits
> from using C instead of assembly, and from using Objective-C instead
> of C, and from using bindings instead of straight method calls.
>
> In the case of bindings (as well as in the two examples I gave),
> bindings are not a pure *replacement* for method calls, they're an
> *alternative* to it that makes some things a lot easier at the cost of
> performance. They're not meant to be a replacement for routine
> accessor functions (though you can certainly use them for that!) but
> as a way of doing a particular sort of introspection that happens to
> be very useful for writing generic UI classes. The cases you'd use
> bindings in are *not* the cases where a simple accessor would be
> appropriate; they're the cases where using bindings instead of simple
> accessors allows one to eliminate 10 lines of code here, 10 lines of
> code there.
>
> All you've really managed to demonstrate is that bindings do not make
> a good replacement for simple accessor calls. We knew that already.
>
>
I think what Marcel is saying is not that generic KVC and bindings and
core data are bad. Just that generic accessors are appropriate to use
for generic things and specific ones are nicer to use for specific
things. That's why there should be both. I don't see much room for
argument that his second line of code above is more to-the-point.
And that's just what KVC is meant to give you. If you have foo/setFoo:
methods, KVC will work by calling them.
Now NSManagedObject gives you a way to have KVC without the specific
accessors, which is great for getting started quickly, and if wiring up
simply binding-based interfaces is all you'll use the objects for it is
probably sufficient. But if you will have a significant amount of code
written that talks directly to your model objects, it is nice to give
them a more convenient, specific, and typed API to use.
Mike Ferris
| Related mails | Author | Date |
|---|---|---|
| mmalcolm crawford | Apr 5, 17:33 | |
| Philip Mötteli | Apr 5, 23:49 | |
| Guy English | Apr 6, 00:29 | |
| Scott Stevenson | Apr 6, 01:14 | |
| Dustin Voss | Apr 6, 02:18 | |
| James Duncan David… | Apr 6, 02:27 | |
| Jake Macmullin | Apr 6, 02:31 | |
| John C. Randolph | Apr 6, 02:55 | |
| James Duncan David… | Apr 6, 03:01 | |
| Ondra Cada | Apr 6, 04:04 | |
| Will Mason | Apr 6, 04:48 | |
| Rogelio M.Serrano… | Apr 6, 06:05 | |
| Rogelio M.Serrano… | Apr 6, 06:06 | |
| mmalcolm crawford | Apr 6, 07:46 | |
| Paul Szego | Apr 6, 08:22 | |
| mmalcolm crawford | Apr 6, 09:52 | |
| ?????Andre? | Apr 6, 09:55 | |
| Ondra Cada | Apr 6, 12:21 | |
| oplus | Apr 6, 12:32 | |
| Mont Rothstein | Apr 6, 12:36 | |
| Philip Mötteli | Apr 6, 14:47 | |
| Scott Stevenson | Apr 6, 18:00 | |
| mmalcolm crawford | Apr 6, 18:39 | |
| Nat! | Apr 6, 22:35 | |
| mmalcolm crawford | Apr 6, 23:47 | |
| Timothy Reaves | Apr 7, 00:25 | |
| mmalcolm crawford | Apr 7, 00:50 | |
| Shawn Erickson | Apr 7, 01:05 | |
| James Duncan David… | Apr 7, 01:28 | |
| Todd Blanchard | Apr 7, 06:37 | |
| Todd Blanchard | Apr 7, 06:41 | |
| Scott Stevenson | Apr 7, 06:59 | |
| Philip Mötteli | Apr 7, 08:32 | |
| Marcel Weiher | Apr 7, 11:59 | |
| Charlton Wilbur | Apr 7, 15:11 | |
| Mike Ferris | Apr 7, 16:53 | |
| Marcel Weiher | Apr 7, 16:55 | |
| Marco Scheurer | Apr 7, 17:55 | |
| Marcel Weiher | Apr 7, 19:13 | |
| Scott Stevenson | Apr 7, 19:55 | |
| Marcel Weiher | Apr 7, 21:03 | |
| Mike R. Manzano | Apr 7, 21:21 | |
| Timothy Reaves | Apr 7, 22:03 | |
| Evan DiBiase | Apr 7, 22:28 | |
| Marcel Weiher | Apr 7, 22:35 | |
| mmalcolm crawford | Apr 7, 23:05 | |
| ttempel | Apr 8, 01:50 | |
| Paul Szego | Apr 8, 11:50 | |
| Johnny Deadman | Apr 8, 14:10 | |
| Philippe Mougin | Apr 8, 16:52 | |
| Shawn Erickson | Apr 8, 17:07 | |
| Shawn Erickson | Apr 8, 17:17 | |
| Ralph Scheuer | Apr 8, 17:28 | |
| Ralph Scheuer | Apr 8, 17:32 | |
| John Brownlow | Apr 8, 17:47 | |
| Charlton Wilbur | Apr 8, 18:34 | |
| Scott Stevenson | Apr 8, 18:43 | |
| Ralph Scheuer | Apr 8, 19:03 | |
| Philippe Mougin | Apr 8, 20:37 | |
| Scott Ellsworth | Apr 8, 21:46 | |
| Scott Ellsworth | Apr 8, 21:48 | |
| Evan DiBiase | Apr 8, 22:16 | |
| mmalcolm crawford | Apr 8, 22:30 | |
| mmalcolm crawford | Apr 8, 23:13 | |
| Marcel Weiher | Apr 9, 02:20 | |
| Marcel Weiher | Apr 9, 02:46 | |
| Scott Ellsworth | Apr 9, 09:39 | |
| Marcel Weiher | Apr 9, 09:44 | |
| Byron Ellis | Apr 9, 10:37 | |
| Marcel Weiher | Apr 9, 14:03 | |
| Charlton Wilbur | Apr 9, 16:01 | |
| ?????Andre? | Apr 9, 18:08 | |
| Scott Stevenson | Apr 9, 18:24 | |
| Scott Stevenson | Apr 9, 18:27 | |
| Marcel Weiher | Apr 10, 00:06 | |
| Marcel Weiher | Apr 10, 00:16 | |
| Marcel Weiher | Apr 10, 00:38 | |
| ?????Andre? | Apr 10, 01:03 | |
| Charlton Wilbur | Apr 10, 01:13 | |
| mmalcolm crawford | Apr 10, 01:53 | |
| Scott Stevenson | Apr 10, 01:58 | |
| Todd Blanchard | Apr 10, 08:32 | |
| mmalcolm crawford | Apr 10, 08:52 | |
| mmalcolm crawford | Apr 10, 09:25 | |
| PA | Apr 10, 12:08 | |
| mmalcolm crawford | Apr 30, 10:18 |






Cocoa mail archive

