When you only encode/serialize a couple of objects/array, I'd say the difference in speed will not be that important : you genherally won't perceive it.
The difference is that serialize is made especially for PHP ; for instance, information sur as classes are not lost with serialize, and can be retrieved when unserializing.
On the other hand, JSON is not specific to PHP, which means it is a good interchange format -- its primary use being to exchange data between Javascript and PHP.
For instance, consider this piece of code :
class A {
public $a;
public function __construct($a) {
$this->a = $a;
}
}
$test = new A(10);
Now, let's serialize and unserialize $test :
var_dump(unserialize(serialize($test)));
We get :
object(A)[2]
public 'a' => int 10
ie, an object, instance of class A.
Now, let's do the same with JSON :
var_dump(json_decode(json_encode($test)));
We now only have an instance of stdClass :
object(stdClass)[2]
public 'a' => int 10
JSON is nice to exchange data (the 'class A' nformation is important for PHP, but probably doesn't have much sense for another application) ; but has its limitations too.