Try compiling the code below and open the CPU window to inspect the generated assembly:

[pascal]procedure TForm1.Button1Click(Sender: TObject);
var
p : tobject;
begin
p := nil;
if p is TForm then
Tag := 1;
if Assigned(p) then
Tag := 3;
if p<>nil then
Tag := 4;
if not (p = nil) then
Tag := 5;
end;[/pascal]

"is" generates a call to a function that tests the rtti-class.
The other variants generated identical code: a simple test and branch.

So "is" is slightly slower, the others are identical.