Instantly share code, notes, and snippets.

View Latency Numbers Every Programmer Should Know.md

Latency Comparison Numbers (~2012)

Name
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cachereference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
View mockExample.php
<?php
class Bob_Validator_BooleanTest extends PHPUnit_Framework_TestCase
{
public function setUp() {
$this->authorizerMock = $this->getMock(Authorizer::class);
$this->authorizerMock->expects($this->once())
->method('authorize')->willReturn(true);
}
View fakeExample.php
<?php
class AuthorizerFake implements Authorizer {
public $allowedUsers = [
'test_user' => '123456',
'test_admin' => '123456'
];
public authorize($username, $password) {
return array_key_exists($this->allowedUsers, $username)
&& $this->allowedUsers[$username] === $password;
View spyExample.php
<?php
class AcceptingAuthorizerSpy implements Authorizer {
public $authorizeWasCalled = false;
public authorize($username, $password) {
$this->authorizeWasCalled = true;
return true;
}
}
View stubExample.php
<?php
class AcceptingAuthorizerStub implements Authorizer {
public function authorize($username, $password) {
return true;
}
}
View dummyExample.php
<?php
class DummyAuthorizer implements Authorizer {
public function authorize($username, $password) {
return null;
}
}