Te comento las 3 principales razones por las que entendi que esta funcion de hash no es muy buena :
1) Cumple algunas propiedades no deseadas, por ejemplo fijate que permutaciones del mismo string caerian en el mismo bucket, por lo tanto, si estas trabajando en un ambiente donde no es raro tener permutaciones esto provocaria un aumento en las colisiones
2) Sumar los valores ASCII es una funcion que "crece lento". A que me reffiero con esto :
Supongamos que quiero almacenar 1.000.000 de strings aproximadamente. Y supongamos que son nombres de personas, por lo que es razonable tener una cota aproximada de 30 caracteres (esto lo digo a ojo y seria incluyendo apellidos, pero no es relevante el valor exacto de la cota). Recordemos ademas que (si no me equivoco en el numero) los valores de la tabla ASCII van del 0 al 255. Esto implica que el maximo valor que puede darse en un string que recibo es 30*255 0 7650 (poner en los 30 lugares el valor mas grande). Entonces como quiero almacenar 1.000.000 de strings me armo una tabla del siguiente primo mas cercano (por simplicidad supongo que es 1.000.001) La funcion de hash entonces estaria usando menos de los 10.000 primeros lugares de la tabla, por lo que la cantidad de colisiones sera enorme. Esto se podria arreglar si se asigna tambien un "peso por posicion" o mejor dicho se escribe en base 256 y siguiendo la codificacion ASCII al string.
3) Los lenguajes no tienen una distribucion uniforme, por ejemplo la a aparece mucho mas en español que la z, entonces esto "indica" que la distribucion de la tabla de hash no será muy uniforme