restrict en C
restrict promete que los punteros no se solapan, y eso deja optimizar al compilador.
void add_arrays(int *restrict out, const int *restrict a,
const int *restrict b, size_t n) {
for (size_t i = 0; i < n; i++) {
out[i] = a[i] + b[i];
}
}
void scale_in_place(int *values, size_t n, int factor) {
for (size_t i = 0; i < n; i++) {
values[i] *= factor;
}
}
Cómo funciona
- Dos punteros restrict no pueden dirigirse al mismo objeto.
- Romper la promesa es comportamiento indefinido, no un aviso.
- memcpy lo tiene; memmove deliberadamente no.
Palabras clave y builtins usados aquí
constforintrestrictsize_tvoid
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 267
- Tokens
- 97
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 55 segundos.
Paso 2 de 2 en Calificadores; paso 7 de 13 en Uniones, campos de bits y comportamiento indefinido.