Don't override an externally-set RKLogging class (could be set by another +load before ours).
Just call isEqual: in RKObjectEqualToObject:; I believe the implementations will do essentially the same thing if necessary, which could avoid a series of isKindOfClass: calls.  In my use case this measured out to be marginally faster.
The checking to set unchanged values is actually kind of expensive, especially for the non-CoreData situations (since calling -valueForKey will allocate objects for scalar properties) and it's rearely needed.  To speed things up, add a property on RKMappingOperation which indicates if the destination object came from a data source or not, then use that in the data source methods in order to determine whether to check for changed values.  CoreData will continue to use isTemporaryID for any managed objects, but we can now avoid checking for unchanged values in many cases.  Also, store the result from the data source once in the main method, instead of checking for every attribute.
Change getter method on new property to be "isNewDestinationObject" per PR comments.
RKMapperOperation has more duplicate code from RKMappingOperation than I realized.  So, I did need to expose the new property to that class to be consistent with it.
Change the RKMappingSourceObject superclass from NSProxy to NSObject.  Should function basically the same way, but performance tests in #2065 showed an improvement for some unknown reason (test application never invoked forwardInvocation:, so it has nothing to do with that).  Implemented some NSObject protocol methods to make sure they get forwarded to the object, and implemented -forwardingTargetForSelector: which is a much faster forwarding mechanism in case it does get used.  Also must implement rk_classForPropertyAtKeyPath: for unit tests to pass since that was no longer being forwarded.  Changed self.object references to _object to avoid additional method call; may have squeezed a tiny bit more performance with that.
Given some further tests, avoiding the ivar access is probably more important than avoiding ObjC calls, but local variables help either wya.  Added more local variables to RKMappingOperation.  Relatively small speedup, but it's there.
Merge pull request #2080 from carllindberg/2065-FasterShouldSetUnchanged

Always set unchanged values for newly-instantiated non-CoreData objects
Merge pull request #2085 from carllindberg/2065-RKMappingSourceObjectSuperclass

Change the RKMappingSourceObject superclass to NSObject.
Merge pull request #2090 from carllindberg/FixRKLoggingInitialization

Fix RKLogging initialization
Merge pull request #2091 from carllindberg/2065-RKObjectIsEqualToObject

Tiny speedup in RKObjectIsEqualToObject
Merge pull request #2092 from carllindberg/2065-MappingOperationLocalVars

Use local variables in RKMappingOperation to avoid multiple calls to methods