Ok, a couple general rules to start out with after looking at your map quick.
1. Any brush not sealing off the world that is somehting other than a normal cube or wedge should be made into a brush-based enitity, e.g., func_wall, func_illusionary.
For example, the castle walls should be world brushes and left as plain rectangles, and the "teeth on top could all together be made into one func_wall.
You're doing this to make it easier for the compiler to calculate the visible space for players. Little detail and any complex things should be func_wall.
Big simple shapes should be left as world brushes, because they block visibilty, or that is to say they separate one area from the next, so the engine does't have to render too much a stuff to the player at any given time. (if you can see the whole map at once the engine has to work really hard, and you get low fps)
For more information on how visibility process, google "binary space partion" and/or "half-life, goldsource optimization"
2. Texture Scales: All textures should be scaled to 1.00, but you can go a little lower or higher to fit something special, or if it's only a few things. Example:
Your castle is scaled to 2.50 x 2.50. By and large, textures are meant to be scaled to 1.00 in order to look correct. Again, you can vary a little if you need from time to time, but never go below .50, and i wouldn't recommend going higher than 2.00 until you learn more.